1. 程式人生 > >總結最近學習python爬蟲遇到的問題(selenium+Chrome,urllib,requests)

總結最近學習python爬蟲遇到的問題(selenium+Chrome,urllib,requests)

最近學習了一下爬蟲,興趣使然吧!(注:以下均在python3的環境下實驗) 1.基本庫,先說一下基本庫有,urllib和requests兩個庫: 基本庫的作用是:傳送頁面請求,處理異常,解析連結,分析Robots協議。 基本用法urllib有:
from urllib.request import urlopen
Requestreq = Request(url,headers=headers)
pic_req = urlopen(req)
html = pic_req.read()
可以看出urllib可以新增標頭檔案,模擬正常的響應,但是設定cookie非常繁瑣,需要新增額外的cookie相關的庫,大部分網站現在都會設定cookie來跟蹤使用者的資料瀏覽,cookie的缺失會導致對方伺服器持續一段時間後直接斷開連線。urlopen()開啟網頁,read()讀取網頁原始碼,urllib的響應速度極快,也是非常適合小規模爬蟲的, requests庫基本用法:
import requests
response = requests.get(url,headers=headers)
print(response.status_code) # 列印狀態碼
print(response.url) # 列印請求
urlprint(response.headers) # 列印頭資訊
print(response.cookies) # 列印cookie資訊
print(response.text) #以文字形式列印網頁原始碼
print(response.content) #以位元組流形式列印
requests庫優於urllib的地方在於裡面直接有cookie,登入驗證,代理設定等等。可以在headers裡面設定cookie,傳送請求。 當然在某些場合下,如在某些圖片的處理上,urllib的效能優於requests。

2,解析庫 解析庫有:Xpath,Beautiful Soup,pyquery,正則表示式

解析庫的主要作用是:處理基本庫提交過來的頁面資料,進行解析,獲取需要的內容對頁面進行加工整理。 使用Xpath需要安裝lxml,其用法在於根據標籤獲得需要的href或者text,還能對網頁url路徑解析

nodename                選取此節點的所有子節點 /                                從當前節點直接選取子節點 //                               重定向節點,可以從任意位置開始( 用的很多
.                                選取當前節點 ..                                選取當前節點的父節點 @                              選取屬性 Beautiful Soup,pyquery也是類似,定義標籤,然後通過find()或者find_all()通過標籤獲取文字屬性或者文字,更深一步的文字加工,或者資訊提取,需要用到正則表示式。 因為我首次接觸爬蟲就是直接用正則表示式解析的,正則表示式,算是“萬金油”型的東西,既可以進行標籤內容定位,也可以進行內容的再次加工提取。用好了,正則表示式在解析方面基本是萬能的,正則表示式裡面的東西太多就不在這裡說了。

3,高階的爬蟲selenium selenium不同於其他的庫,selenium是呼叫真實的瀏覽器,去獲取網頁資訊,不需要設定cookie,headers這些東西。也不容易被對方伺服器中斷連線。更為強大的地方在於,selenium可以模仿使用者的鍵盤和滑鼠行為,傳送資訊指令。並且自帶的有解析網頁的方法。經過Javascript渲染的頁面selenium也可以正常解析。抓取方式非常有效。

selenium需要有本地瀏覽器支援: 支援的瀏覽器有:Chrome()#google瀏覽器,已經提供了headless模式

                            Firefox()#火狐瀏覽器                             Edge()#windows的IE瀏覽器                           PhantomJS()#以前很適合selenium的,其無頭模式大受歡迎,然而2018年3月份,開發者之間出現矛盾,專案停止更新,被封存了,最新版的selenium已經不再支援PhantomJS,而Chrome()從2017年開始提供瀏覽器的headless()(無頭模式)廣泛使用。                             Safari()#蘋果的瀏覽器       用selenium+Chrome和urllib結合的方式,爬取了塔多漫畫漫畫網的漫畫,具體程式碼請在github 上下載:        https://github.com/linggood/-