爬蟲數據清洗,必然會使用到re、xpath、css。目前我總結前面兩個,有時間再補上、
下面內容都是基於Python
一、正則表達式
前提包:import re
我正則技能差,因爲一般只使用:
.*? 然後左右兩邊寫上會出現的信息
r"\"匹配.*?又是無用的信息\""
最後通過字符串的 replace 把沒用的信息再替換。
這個方法幾乎解決了60%我以上的信息清洗。然後再結合上面的一些語法大概能構建自己想要的數據re。
題外話(正則表達式然後想起了字符串匹配,還有沒學的後綴自動機23333
二、xpath
xpath可以直接定位都壓面的某個位置,然後直接提取出你需要的文本,然後構造的路徑就跟着頁面往下走就好。
有個比較好的就是可以直接室友瀏覽器直接導出xpath路徑,坑也在這裏!
注意點:
1、有些頁面顯示是瀏覽器自動補全信息之後的,頁面經過js或者其他東西改變了可能和responese不同(例如微信的某些頁面所以不要盲目相信瀏覽器導出的xpath,更多觀察。
2、不同地方的xpath可能有點小不同、
在scrapy中可以直接使用xpath,、
需要導入的包:from lxml import html
但是在requests的返回數據中需要經過: html.fromstring(response.text) 處理
然後才能正常的使用xpath
xpath和re結合簡直高效清洗數據。
一些常用的信息:
Xpath的到的也是個selectors ,可以繼續使用xpath提取
/ 從根節點選取。
// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。
. 選取當前節點。
.. 選取當前節點的父節點。
@ 選取屬性。
i.extract() //把xpath獲得的數據提取出來,獲得的是數組信息
text() 使用:".//a/text()" 獲得text的內容
@href //獲得url
錯誤報告:Element h2 at 0x194853653c8>
原因 :你獲得的是他的屬性值,而不是內容。
三、CSS提取
以後用的比較多再補上。