千鋒教育python數(shù)據(jù)分析教程200集,Python數(shù)據(jù)分析師入門必備視頻

爬蟲流程梳理
import requests from bs4 import BeautifulSoup # 指定url url 來源 網(wǎng)址欄 數(shù)據(jù)中解析獲取 # 發(fā)請求 接響應(yīng) response = requests.get(url) # 獲取的內(nèi)容 響應(yīng)狀態(tài)碼 文本數(shù)據(jù) 字節(jié)數(shù)據(jù) 編碼 內(nèi)容 服務(wù)器響應(yīng)的編碼 # 判斷響應(yīng)是否成功 if response.status_code == 200: # 獲取響應(yīng)數(shù)據(jù) # 如果是對 圖片連接 視頻鏈接 音頻鏈接發(fā)請求 響應(yīng)的數(shù)據(jù)字節(jié)數(shù)據(jù) response.content 保存 # 文本數(shù)據(jù)?data = response.text # 解析數(shù)據(jù)?數(shù)據(jù) 加載進美麗的湯 data_html = BeautifulSoup(文本數(shù)據(jù)data,解析器'html.parser') # 獲取數(shù)據(jù) select(css選擇器語法) select_one id #屬性值 class .屬性值 標(biāo)簽名? 包含 >?空格 其他屬性選擇器?選擇器[屬性名=值] 結(jié)構(gòu)選擇器?:first-child :last-child :nth-child(2)? # 獲取標(biāo)簽之間的文本數(shù)據(jù) 標(biāo)簽.text # 獲取標(biāo)簽的屬性值?標(biāo)簽.attrs.get(屬性名) else: 響應(yīng)失敗
python操作excel
使用的python中的模塊 import openpyxl excel 組成 工作簿 一個工作簿中可以有多張工作表 自帶一張工作表 Sheet 工作表 包含多個單元格?行列確定某個單元格?
selenium的使用
需要一個模塊 import selenium
驅(qū)動瀏覽器打開頁面
相對于requests的優(yōu)點 不管數(shù)據(jù)是否是靜態(tài)的還是動態(tài) 只要頁面上有 就能獲取
打開瀏覽器
from selenium import webdriver # 瀏覽器的初始化 browser = webdriver.Chrome() # 發(fā)送請求 browser.get('https://www.baidu.com/') # 打印頁面的標(biāo)題 print(browser.title) # 退出模擬瀏覽器 browser.quit() # 一定要退出!不退出會有殘留進程
無界面模式
from selenium import webdriver # 1. 實例化配置對象 chrome_options = webdriver.ChromeOptions() # 2. 配置對象添加開啟無界面命令 chrome_options.add_argument('--headless') # 3. 配置對象添加禁用gpu命令 chrome_options.add_argument('--disable-gpu') # 4. 實例化帶有配置對象的browser 對象 browser = webdriver.Chrome(chrome_options=chrome_options) browser.get('https://www.baidu.com/') # 查看請求的數(shù)據(jù) print(browser.page_source) # 查看渲染后的數(shù)據(jù),就可以Xpath進行解析獲取數(shù)據(jù)了 print(browser.get_cookies()) # 查看請求頁面后的cookies值 print(browser.current_url) # 查看請求url # 關(guān)閉頁面 browser.close() # 關(guān)閉瀏覽器 browser.quit()
元素定位
from selenium import webdriver from selenium.webdriver.common.by import By chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') browser = webdriver.Chrome(chrome_options=chrome_options) url = 'https://www.xxx.com/' browser.get(url) html_str = browser.page_source from selenium.webdriver.common.by import By # 獲取第一個元素 browser.find_element(by=By.ID, value="list-1") # 獲取多個元素 browser.find_elements(by=By.ID, value="list-1")
元素操作
ret = browser.find_element_by_class_name('element').text print(ret[0].text) ret = browser.find_element_by_tag_name('a').get_attribute('href') print(ret[0].get_attribute('href'))
前進后退
# 前進 browser.forward() # 后退 browser.back()
執(zhí)行js
from selenium import webdriver browser = webdriver.Chrome() url = 'https://www.baidu.com/' browser.get(url) js = 'window.scrol1To(O,document.body.scrollHeight)' # js語句 browser.execute_script(js) # 執(zhí)行js的方法 browser.quit()
頁面等待
- 隱式等待
隱式等待針對的是元素定位,隱式等待設(shè)置了一個時間,在一段時間內(nèi)判斷元素是否定位成功,如果完成了,就進行下一步。在設(shè)置的時間內(nèi)沒有定位成功,則會報超時加載 from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) # 隱式等待10秒 driver.get('https://www.baidu.com/') myDynamicElement = driver.find_element_by_id("input")
- 顯示等待
顯式確定等待指定某個元素,然后設(shè)置最長等待時間。如果在這個時間還沒有找到元素,那么便會拋出異常了。 from selenium import webdriver from selenium.webdriver.common.by import By # WebDriverWait 庫,負(fù)責(zé)循環(huán)等待 from selenium.webdriver.support.ui import WebDriverWait # expected_conditions 類,負(fù)責(zé)條件出發(fā) from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('https://www.baidu.com/') try: ?# 頁面一直循環(huán),直到 id="input" 出現(xiàn) ?element = WebDriverWait(driver, 10).until( ???EC.presence_of_element_located((By.ID, "input")) ?) finally: ?driver.quit()
使用代理IP
from selenium import webdriver import time # 1. 實例化配置對象 options = webdriver.ChromeOptions() # 2. 配置對象添加使用代理ip的命令 options.add_argument('--proxy-server=http://ip地址') # 代理IP:端口號 # 3. 實例化帶有配置對象的driver對象 driver = webdriver.Chrome(chrome_options=options) driver.get("https://www.baidu.com") # 獲取頁面內(nèi)容 print(driver.page_source) # 延遲3秒后關(guān)閉當(dāng)前窗口,如果是最后一個窗口則退出 time.sleep(3) driver.close()
修改請求頭
用于偽裝請求頭 from selenium import webdriver import time agent = 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1' # 1. 實例化配置對象 options = webdriver.ChromeOptions() # 2. 配置對象修改請求頭 options.add_argument('--user-agent=' + agent) # 3. 實例化帶有配置對象的driver對象 driver = webdriver.Chrome(chrome_options=options) driver.get("https://www.baidu.com") # 獲取頁面內(nèi)容 print(driver.page_source) # 延遲3秒后關(guān)閉當(dāng)前窗口,如果是最后一個窗口則退出 time.sleep(3) driver.close()
標(biāo)簽: