Python之scrapy常見問(wèn)題

Q1.用scrapy shell “http://****”命令測(cè)試過(guò)xpath,可以確定xpath沒(méi)有問(wèn)題,但pycharm就是提示xpath有問(wèn)題

A1: 把xpath中的"改成','改成",如果這個(gè)方法還不行,就重啟pycharm重試下

Q2:控件class名或id名都對(duì),xpath就是報(bào)錯(cuò),用scrapy shell “http://****”命令測(cè)試xpath也是報(bào)錯(cuò),

舉例:response.xpath('//article[@class="news"]//a')

A2:關(guān)注下頁(yè)面中控件對(duì)應(yīng)的class或id,是不是有多個(gè),換個(gè)別的控件作為查找依據(jù)~
例子:頁(yè)面上class為news的article很多,導(dǎo)致在找a標(biāo)簽過(guò)程中有報(bào)錯(cuò),換個(gè)別的元素,比如父類div,或者子類p

Q3:控件class名或id名都對(duì),排除Q2情況,xpath就是報(bào)錯(cuò),用scrapy shell “http://****”命令測(cè)試xpath也是報(bào)錯(cuò),

舉例:獲取百度主頁(yè)左上角的按鈕列表


目標(biāo):百度首頁(yè)按鈕(guggle簡(jiǎn)書原創(chuàng))

A3: 主要原因是通過(guò)瀏覽器訪問(wèn)的html和scrapy抓取到的html是不一樣
例子:如果通過(guò)瀏覽器訪問(wèn),頁(yè)面源碼如圖所示


瀏覽器訪問(wèn)的頁(yè)面源碼(guggle簡(jiǎn)書原創(chuàng))

我們可以通過(guò)xpath("http://div[@id='s-top-left']//a"),用firefox瀏覽器的Try Xpath插件可以看到xpath語(yǔ)句是沒(méi)有問(wèn)題的


Try Path插件運(yùn)行xpath("http://div[@id='s-top-left']//a")(guggle簡(jiǎn)書原創(chuàng))

如果要看scrapy訪問(wèn)頁(yè)面的源碼,可以在cmd命令窗口輸入
>scrapy shell "https://www.baidu.com"

命令完成后,屏幕顯示In [1]: ,再輸入

>view(response)

瀏覽器自動(dòng)打開scrapy抓到的html,源碼為


scrapy訪問(wèn)的頁(yè)面源碼(guggle簡(jiǎn)書原創(chuàng))

我們需要通過(guò)xpath("http://div[@id='u1']//a")才能找到按鈕列表,用firefox瀏覽器的Try Xpath插件驗(yàn)證結(jié)果


Try Path插件運(yùn)行xpath("http://div[@id='u1']//a")(guggle簡(jiǎn)書原創(chuàng))

我們?cè)趕pider腳本中,寫response.xpath("http://div[@id='u1']//a")才能找到百度首頁(yè)的這些按鈕列表,通過(guò)response.xpath("http://div[@id='s-top-left']//a")可是找不到的哦~

Q4:使用scrapy自帶的'scrapy.pipelines.images.ImagesPipeline',setting中配置下載目錄IMAGES_STORE = "guggle_jianshu",圖片無(wú)法下載到本地

A4:spider中parse方法中返回的item,需要使用image_urls這個(gè)key值,并且這個(gè)image_urls對(duì)應(yīng)的value值是個(gè)list

系統(tǒng)自帶的ImagesPipeline如何正確使用(guggle簡(jiǎn)書原創(chuàng)).png

PS:如果需要使用scrapy.pipelines.files.FilesPipeline,系統(tǒng)默認(rèn)是使用file_urls這個(gè)key值
如果需要使用scrapy.pipelines.images.ImagesPipeline,但是不用系統(tǒng)自定義的key值,需要在setting中配置IMAGES_URLS_FIELD = "guggle_img"
自定義ImagesPipeline使用的key值.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容