Fiddler抓包工具設置
1 設置Fiddler軟件
https: Tools - options - HTTPS - ...from browsers only
Actions 添加證書信任
connections: 設置端口號 8888
重啟Fiddler軟件
2.設置Chrome瀏覽器
安裝代理切換插件: Proxy SwitchOmega
選項 - 新建情景模式 - HTTP 127.0.0.1 8888 - 應用情景模式
把代理切換到自己新建的情景模式上
3.Fiddler常用菜單
Inspector : 查看數(shù)據(jù)包詳細內(nèi)容,分為 請求(request) 和 響應(response) 兩部分
常用子選項卡
Headers : 顯示請求頭信息
WebForms: 顯示POST數(shù)據(jù),在body中
Raw: 將整個請求顯示為純文本
lxml模塊
-
使用流程
1 from lxml import etree
2 parseHtml = etree.HTML(html)
3 rList = parseHtml.xpath('')
json模塊
1 json.loads() : join->python
2 json.dumps() : python->json
Ajax動態(tài)加載
1 抓包工具: WebForms->QuerySting
2 parmas = {QuerySting一堆查詢參數(shù)}
3 URL地址 : 抓包工具Raw下的GET地址
強大網(wǎng)絡爬蟲組合 selenium+phantomjs / chromedriver
selenium
- Web自動化測試工具,應用于Web自動化測試
- 特點
1 可以運行在瀏覽器戏羽,根據(jù)指定命令操作瀏覽器,讓瀏覽器自動加載頁面
2 只是工具谴餐,需要與第三方瀏覽器組合使用
3 安裝
conda install selenium
phantomjs(無界面瀏覽器(無頭瀏覽器))
- 特點
1 把網(wǎng)站加載到內(nèi)存進行頁面加載
2 運行高效 - Windows安裝
把下載的exe文件拷貝到python安裝目錄的Script目錄下
查找python程序在哪里 cmd命令where python
查看是否裝好phantomjs -v
- ubuntu系統(tǒng)下的安裝
1 下載安裝包并解壓: phantomjs-2.1.1-...
2 cd到解壓路徑的 bin 目錄下
3 把文件拷貝到 /usr/bin/ 目錄下彤敛,命令:sudo cp phantomjs /usr/bin/
4 終端輸入: phantomjs -v
chromedriver
- 安裝
安裝網(wǎng)址
1 查看Chrome瀏覽器版本
2 拷貝chromedriver.exe到Scripts目錄下
3 chromedriver -v
示例代碼
打開百度并獲取頁面截圖
from selenium import webdriver
import time
# 先創(chuàng)建
driver = webdriver.PhantomJS()
# 打開百度
driver.get('http://www.baidu.com/')
# 找到搜索框掠抬,發(fā)送文字
key = input('請輸入要搜索的內(nèi)容:')
driver.find_element_by_id('kw').send_keys(key)
# 找到 百度一下的按鈕,點擊一下
driver.find_element_by_id('su').click()
# 等待加載一下
time.sleep(1)
# 截圖
driver.save_screenshot(key+'.png')
# 關(guān)閉瀏覽器
driver.quit()
瀏覽器(driver)對象的方法
- driver.get(url): 發(fā)請求聘鳞,獲取響應
- driver.page_source: 獲取html源碼
-
driver.page_source.find('字符串')
查找失敗: -1 -
單元素查找(節(jié)點對象要拂,只找第一個抠璃,找到就直接返回)
1 driver.find_element_by_id('')
2 driver.find_element_by_name('')
3 driver.find_element_by_class_name('')
4 driver.find_element_by_xpath('') -
多元素查找(返回值是一個列表,列表中是一個一個的節(jié)點對象)
driver.find_elements_by_...()
返回值: 列表
利用節(jié)點對象的 text 屬性可獲取文本內(nèi)容 - 節(jié)點對象.send_keys('要發(fā)送的內(nèi)容')
- 節(jié)點對象.click()
-
執(zhí)行腳本,進度條拉到最底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
- 如何設置chrome為無界面瀏覽器
opt = webdriver.ChromeOptions()
opt.set_headless()
# 設置截圖時候的圖片大小
opt.add_argument('windows-size=1920x3000')
# 創(chuàng)建瀏覽器對象
driver = webdriver.Chrome(options=opt)