python 正則表達式和Xpath清洗數據總結

爬蟲數據清洗,必然會使用到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提取

 

    以後用的比較多再補上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章