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.其他功能