欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Scrapy中詭異xpath的匹配內(nèi)容失效問題及解決

 更新時(shí)間:2022年12月19日 14:52:19   作者:bladestone  
這篇文章主要介紹了Scrapy中詭異xpath的匹配內(nèi)容失效問題及解決方案,具有很好的價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

引言

在爬蟲的世界里,xpath是一種非常簡(jiǎn)單易用的匹配規(guī)則,方便我們?cè)趙eb世界里提取需要的各類信息。

本文將講述一個(gè)xpath規(guī)則無效的問題分析過程。

環(huán)境介紹

Python 3.6.1 Scrapy 1.5.0

問題

在選用xpath之時(shí),都是基于firefox或者chrome中自帶的Web開發(fā)工具來選取的。

這里一般推薦使用chrome的devtool,功能強(qiáng)大,簡(jiǎn)單易用,童叟無欺,居家旅游必須良品呀。

具體示意如下:

基于xpath提取信息

基于xpath提取的路徑信息,示例如下:

//*[@id=”SpanPlanSchoolInfo”]/table[2]/tbody/tr[3]/td/table/tbody/tr[2]/td[1]/a

在Scrapy代碼中使用如下:

def parse(self, response):
    xpath_url = '//*[@id="SpanPlanSchoolInfo"]/table[2]/tbody/tr[3]/td/table/tbody/tr[2]/td[1]/a'
    urls = response.xpath(xpath_url)
    .....

但是在實(shí)際執(zhí)行中,卻一直沒有匹配到urls,根據(jù)實(shí)際上頁面返回正常,同時(shí)數(shù)據(jù)也是正確可以匹配到的,那問題出現(xiàn)在哪里呢?

問題分析

根據(jù)結(jié)果來分析,如果頁面存在,但是沒有正確的結(jié)果輸出,則一定是xpath的問題,但是xpath問題是基于chrome自帶的devtools工具copy而來的,怎么可能出錯(cuò)恩?真是讓人想不透的問題…….

在經(jīng)過一番深入的反復(fù)嘗試之后,主要是基于scrapy提供的強(qiáng)大的scrapy shell交互工具,可以幫助開發(fā)者快速地一步一步地定位問題。

于是采取了逐步縮小xpath的方式,逐步定位問題,終于找到了問題的原因所在,那就是tbody是一個(gè)需要移除的tag標(biāo)簽。

將正確的xpath設(shè)置為:

//*[@id=”SpanPlanSchoolInfo”]/table[2]/tr[3]/td/table/tbody/tr[2]/td[1]/a

問題總結(jié)

雖然問題解決了,但是原因是什么呢?

經(jīng)過分析,主要是由于瀏覽器本身自動(dòng)為table新增了tbody標(biāo)簽內(nèi)容,但是在xpath中是不需要的,需要在進(jìn)行xpath查詢之時(shí)移除掉。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • django中的圖片驗(yàn)證碼功能

    django中的圖片驗(yàn)證碼功能

    這篇文章主要介紹了django中的圖片驗(yàn)證碼功能,需要的朋友可以參考下
    2019-09-09
  • python中如何寫類

    python中如何寫類

    在本篇文章里小編給大家分享的是一篇關(guān)于python中寫類的方法和技巧,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 詳解python with 上下文管理器

    詳解python with 上下文管理器

    這篇文章主要介紹了python with和上下文管理器的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • 用Python爬取指定關(guān)鍵詞的微博

    用Python爬取指定關(guān)鍵詞的微博

    這篇文章主要介紹了用Python爬取指定關(guān)鍵詞的微博,下面文章圍繞Python爬取指定關(guān)鍵詞的微博的相關(guān)資料展開詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Django 如何實(shí)現(xiàn)文件上傳下載

    Django 如何實(shí)現(xiàn)文件上傳下載

    這篇文章主要介紹了Django 如何實(shí)現(xiàn)文件上傳下載,幫助大家更好的理解和學(xué)習(xí)使用Django框架,感興趣的朋友可以了解下
    2021-04-04
  • 在python中實(shí)現(xiàn)對(duì)list求和及求積

    在python中實(shí)現(xiàn)對(duì)list求和及求積

    今天小編就為大家分享一篇在python中實(shí)現(xiàn)對(duì)list求和及求積,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • pymysql的簡(jiǎn)單封裝代碼實(shí)例

    pymysql的簡(jiǎn)單封裝代碼實(shí)例

    這篇文章主要介紹了pymysql的簡(jiǎn)單封裝代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python科學(xué)計(jì)算之NumPy入門教程

    Python科學(xué)計(jì)算之NumPy入門教程

    這篇文章主要介紹了Python科學(xué)計(jì)算之NumPy,文中給出了詳細(xì)的介紹與示例代碼,對(duì)大家的理解具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來學(xué)習(xí)學(xué)習(xí)。
    2017-01-01
  • python中sys模塊的介紹與實(shí)例

    python中sys模塊的介紹與實(shí)例

    這篇文章主要給大家介紹了關(guān)于python中sys模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python中的生成器、迭代器、裝飾器詳解

    python中的生成器、迭代器、裝飾器詳解

    本文詳細(xì)講解了python中的生成器、迭代器、裝飾器,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論