爬蟲開發知識入門基礎(2)

1、爬蟲解析
對於解析來說,對於 HTML 類型的頁面來說,常用的解析方法其實無非那麼幾種,正則、XPath、CSS Selector,另外對於某些接口,常見的可能就是 JSON、XML 類型,使用對應的庫進行處理即可。
在這裏插入圖片描述
這些規則和解析方法其實寫起來是很繁瑣的,如果我們要爬上萬個網站,如果每個網站都去寫對應的規則,那麼不就太累了嗎?所以智能解析便是一個需求。
在這裏插入圖片描述
智能解析意思就是說,如果能提供一個頁面,算法可以自動來提取頁面的標題、正文、日期等內容,同時把無用的信息給刨除,例如上圖,這是 Safari 中自帶的閱讀模式自動解析的結果。
對於智能解析,下面分爲四個方法進行了劃分:
• readability 算法,這個算法定義了不同區塊的不同標註集合,通過權重計算來得到最可能的區塊位置。
• 疏密度判斷,計算單位個數區塊內的平均文本內容長度,根據疏密程度來大致區分。
• Scrapyly 自學習,是 Scrapy 開發的組件,指定⻚頁⾯面和提取結果樣例例,其可⾃自學習提取規則,提取其他同類⻚頁⾯面。
• 深度學習,使⽤用深度學習來對解析位置進⾏行行有監督學習,需要⼤大量量標註數據。
如果能夠容忍一定的錯誤率,可以使用智能解析來大大節省時間。
在這裏插入圖片描述
目前這部分內容我也還在探索中,準確率有待繼續提高。
2、儲存
存儲,即選用合適的存儲媒介來存儲爬取到的結果,這裏還是分爲四種存儲方式來進行介紹。
• 文件,如 JSON、CSV、TXT、圖⽚、視頻、⾳頻等,常用的一些庫有 csv、xlwt、json、pandas、pickle、python-docx 等。
在這裏插入圖片描述
在這裏插入圖片描述 • 數據庫,分爲關係型數據庫、非關係型數據庫,如 MySQL、MongoDB、HBase 等,常用的庫有 pymysql、pymssql、redis-py、pymongo、py2neo、thrift。 • 搜索引擎,如 Solr、ElasticSearch 等,便於檢索和實現⽂本匹配,常用的庫有 elasticsearch、pysolr 等。 • 雲存儲,某些媒體文件可以存到如七⽜牛雲、又拍雲、阿里雲、騰訊雲、Amazon S3 等,常用的庫有 qiniu、upyun、boto、azure-storage、google-cloud-storage 等。 這部分的關鍵在於和實際業務相結合,看看選用哪種方式更可以應對業務需求 當然爬蟲採集數據使用高質量的http代理 ,效果是最好的。