1. 程式人生 > >python爬蟲-基礎用法總結

python爬蟲-基礎用法總結

     近期在學習爬蟲,前面自己在網上找部落格看,也自己寫了一些簡單的程式碼,感覺知識不夠系統。故從網上找了視訊來學習,下面是對一些基礎知識的總結。

一.urllib庫使用(還是requests庫方便,所以不列舉用法了)

二.requests庫使用(比urllib庫更方便)

1.請求

(1)get與post請求

這是新增data和headers的post請求,get請求只能傳url和headers兩個引數

(2)響應

a.列印相關資訊,譬如頭部、狀態碼、cookie、url等(列印cookie很方便,不用像urllib裡面還用cookiejar)

也可以這麼列印cookie

b.解析json

如果你的返回結果是一個json字串,以上兩種方法會將其轉換為json物件,兩種會可以得到相同結果

c.解析二進位制資料

用response.content即可獲取二進位制資料,儲存圖片、視訊等

(3)高階操作

a.維持會話(一般用於模擬登入)

用session()方法,上面的url相當於set方法來設定cookie,而下面用來get cookie

(在專案中的用法暫時不太清楚)

b.證書驗證

c.代理設定(就不用像urllib中使用handler了)

d.異常處理

也可以只捕獲第一個子類error

三、bs4

1.直接選擇標籤

(1)獲取整個標籤

注意:這種選擇方式只返回第一個結果

(2)獲取屬性

上面兩種方式都可以

(3).string獲取標籤內文字內容

還可以巢狀選擇

2.獲取樹節點

(1)子節點:soup.p(某標籤,此處按p舉例).contents/children均可,後者輸出是個列表,需要用迭代器迴圈,如下圖所示

上面的輸出了索引和列表內容,也可以用print(list(enumerate(soup.p.children)))輸出

(2)子孫節點:soup.p.descendants,也需要用迭代器

(3)父節點:soup.p.parent(最近的父節點,不是列表)

(4)祖先節點:soup.p.parents(列表,會是各層巢狀的父節點)

(5)兄弟節點:soup.p.previous_siblings/next_siblings(也是列表)

3.標準選擇器

這兩個函式可以層層迭代,不斷縮小範圍

(1)根據標籤選擇

(2)根據屬性來查詢

兩者均可返回列表,右邊是更簡化的寫法

4.css選擇器(select方法,相當於find_all)

(1)獲取標籤

(2)選擇屬性

第二個可以獲取標籤內的文字

四、selenium庫

1.獲取元素

左邊是所有的查詢方法,後邊是示例

獲取屬性方法  標籤.get_attribute('屬性'),獲取文字值標籤.text,獲取其他資訊標籤.id/location/size等

2.元素互動操作(先獲取元素再進行一些動作)

find_element_by_id()是找到搜尋框,send_keys是模擬鍵盤內的輸入(‘Python’+回車),wait until是等相應元素加載出來

3.互動動作(不同於元素互動,把動作附加到序列鏈中序列進行)

必須匯入actionchain包,首先switch函式找到iframe標籤(!!在子frame裡不能查詢到父frame裡的標籤),通過id分別選擇出需要拖拽的兩個元素,再呼叫actionchain裡的方法進行拖拽和perform,就可以在網頁上顯示出效果

其他的一些動作檢視api:http://selenium-python.readthedocs.io/api.html

未提供API的一些動作,比如下拉動作,可以傳入js程式碼來實現

4.等待

5.其他功能