【问题标题】:How do i use XPATH properly in scrapy?如何在 scrapy 中正确使用 XPATH?
【发布时间】:2021-09-24 12:45:01
【问题描述】:

http://mnregaweb4.nic.in/netnrega/asset_report_dtl.aspx?lflag=eng&state_name=WEST%20BENGAL&state_code=32&district_name=NADIA&district_code=3201&block_name=KRISHNAGAR-I&block_code=&panchayat_name=DOGACHI&panchayat_code=3201009009&fin_year=2020-2021&source=national&Digest=8+kWKUdwzDQA1IJ5qhD8Fw

上面是页面的链接

https://i.stack.imgur.com/8bhzV.png

红色标记的框号是我试图通过 xpath 得到的

https://i.stack.imgur.com/mca05.png

红色标记的框是同一项目的检查行。我的代码在下面


**scrapy shell**

**fetch("http://mnregaweb4.nic.in/netnrega/asset_report_dtl.aspx?lflag=eng&state_name=WEST%20BENGAL&state_code=32&district_name=NADIA&district_code=3201&block_name=KRISHNAGAR-I&block_code=&panchayat_name=DOGACHI&panchayat_code=3201009009&fin_year=2020-2021&source=national&Digest=8+kWKUdwzDQA1IJ5qhD8Fw")**

**assetid = response.xpath("//div[3]/center/table[2]/tbody/tr[4]/td[2]")**

**assetid**

**[]**(This is what it returns.)

**assetid = response.xpath("//div[3]/center/table[2]/tbody/tr[4]/td[2]/text()")**(I tried this also)

**assetid**

**[]**(This is what it returns.)

当使用视图(响应)时,它显示为 true 并在浏览器中打开同一页面。

我的代码在下面

https://i.stack.imgur.com/YAf38.png

https://i.stack.imgur.com/fTWwH.png

【问题讨论】:

    标签: python html xpath scrapy


    【解决方案1】:

    当您说结束 xpath 时,您将打印您期望的内容,我也会更新您的 xpath:

    改为:

    assetid = response.xpath("//div[3]/center/table[2]/tbody/tr[4]/td[2]")
    

    使用这个:

    assetid = response.xpath('//table[2]//tr[4]/td[2]/text()').get()
    

    我希望它会起作用。

    【讨论】:

    • assetid = response.xpath('//table[2]//tr[4]/td[2]/text()').get() 这个有效,而我尝试了与assetid = response.xpath("//div[3]/center/table[2]/tbody/tr[4]/td[2]/text()").get() 相同,这不起作用。我不明白我的 xpath 哪里出错了。谢谢你的帮助。
    • 当我打印 response.text 时没有 div。 Scrapy 可能会导致静态地获取响应体。通常//table//some tr,td 的工作效率更高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多