溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scrapy爬蟲容易忽視的點

發(fā)布時間:2020-09-25 09:13:08 來源:億速云 閱讀:169 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Scrapy爬蟲容易忽視的點,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

scrapy爬蟲注意事項

一、item數(shù)據(jù)只有最后一條

這種情況一般存在于對標簽進行遍歷時,將item對象放置在了for循環(huán)的外部。解決方式:將item放置在for循環(huán)里面。

Scrapy爬蟲容易忽視的點

二、item字段傳遞后錯誤,混亂

有時候會遇到這樣的情況,item傳遞幾次之后,發(fā)現(xiàn)不同頁面的數(shù)據(jù)被混亂的組合在了一起。這種情況一般存在于item的傳遞過程中,沒有使用深拷貝。解決方式:使用深拷貝來傳遞item。

Scrapy爬蟲容易忽視的點

三、對一個頁面要進行兩種或多種不同的解析

這種情況一般出現(xiàn)在對同一頁面有不同的解析要求時,但默認情況下只能得到第一個parse的結果。產(chǎn)生這個結果的原因是scrapy默認對擁有相同的url,相同的body以及相同的請求方法視為一個請求。解決方式:設置參數(shù)dont_filter='True'。

Scrapy爬蟲容易忽視的點

四、xpath中contains的使用

這種情況一般出現(xiàn)在標簽沒有特定屬性值但是文本中包含特定漢字的情況,當然也可以用來包含特定的屬性值來使用(只不過有特定屬性值的時候我也不會用contains了)。

作者:村上春樹

書名:挪威的森林

以上面這兩個標簽為例(自行F12查看),兩個span標簽沒有特定的屬性值,但里面一個包含作者,一個包含書名,就可以考慮使用contains來進行提取。

Scrapy爬蟲容易忽視的點

五、提取不在標簽中的文本

有時候會遇到這樣的情況,文本在兩個標簽之間,但不屬于這兩個標簽的任何一個。此時可以考慮使用xpath的contains和following共同協(xié)助完成任務。

示例:

作者:

"村上春樹"

書名

"挪威的森林" 

Scrapy爬蟲容易忽視的點

六、使用css、xpath提取倒數(shù)第n個標簽

對于很多頁面,標簽的數(shù)量有時候無法保證是一致的。如果用正向的下標進行提取,很可能出現(xiàn)數(shù)組越界的情況。這種時候可以考慮反向提取,必要時加一些判斷。 

Scrapy爬蟲容易忽視的點

七、提取表格信息

其實對于信息抓取,很多時候我們需要對表格頁面進行抓取。一般的方方正正的表格提取相對簡單,這里不討論。只說下含有合并單元格的情況。

以這個網(wǎng)頁的表格為例,定義5個字段批次,招生代碼,專業(yè),招生數(shù)量以及費用,注意到合并單元格的標簽里有個rowspan屬性,可以用來辨識出有幾行被合并。我的思路是有多少行數(shù)據(jù),就將batch批次擴展到多少個,形成一個新的列表,然后進行遍歷提取數(shù)據(jù)。

Scrapy爬蟲容易忽視的點

八、模擬登陸

當頁面數(shù)據(jù)需要登陸進行抓取時,就需要模擬登陸了。常見的方式有:使用登陸后的cookie來抓取數(shù)據(jù);發(fā)送表單數(shù)據(jù)進行登陸;使用自動化測試工具登陸,比如selenium配合chrome、firefox等,不過聽說selenium不再更新,也可以使用chrome的無頭模式。鑒于自動化測試的抓取效率比較低,而且我確實很久沒使用過這個了。本次只討論使用cookie和發(fā)送表單兩種方式來模擬登陸。

使用cookie

使用cookie的方式比較簡單,基本思路就是登陸后用抓包工具或者類似chrome的F12調試界面查看cookie值,發(fā)送請求時帶上cookie值即可。

Scrapy爬蟲容易忽視的點

發(fā)送表單方式進行登陸

cookie是有有效期的,對于大量數(shù)據(jù)的抓取,更好的方式是發(fā)送表單進行模擬登陸。scrapy有專門的函數(shù)scrapy.FormRequest()用來處理表單提交。網(wǎng)上有些人說cookie沒法保持,可以考慮用我下面的方式。

Scrapy爬蟲容易忽視的點

看完上述內(nèi)容,你們對Scrapy爬蟲容易忽視的點有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI