写爬虫的时候,为什么用xpath取不到结果?

When writing a crawler, why can't I get results using xpath?

我需要解析这个网站元素的页数

代码:

url = "https://nj.zu.ke.com/zufang/caochangmendajie/"

page=etree.HTML(Download.downloadPage(url))            #download page
nums = page.xpath('/html/body/div[3]/div[1]/div[5]/div[1]/div[2]/a[2]/text()')
print(nums)

我用的是chrome,右键复制完整的XPath

/html/body/div[3]/div[1]/div[5]/div[1]/div[2]/a[2]

我想知道为什么我的 nums(list) 是空的? 并且可以在别处使用xpath解析。 谢谢。

您可以使用此 xpath 转到下一页。

//*[@id="content"]/div[1]/div[2]/a[3]

或者您可以像这样创建一个 url 列表,然后通过 for 循环解析项目。

urls =["https://nj.zu.ke.com/zufang/caochangmendajie/pg{}/#contentList".format(x) for x in range(1,10)]

在 scrapy shell

>>> url ='https://nj.zu.ke.com/zufang/caochangmendajie/'
>>> r = scrapy.Request(url)
>>> fetch(r)
2021-02-16 14:35:21 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://nj.zu.ke.com/zufang/caochangmendajie/> (referer: None)
>>> for url in response.css('div.content__article li a ::attr("href")').extract()[4:]:
...     print(url)
... 
/zufang/caochangmendajie/pg2/
/zufang/caochangmendajie/pg3/
/zufang/caochangmendajie/pg4/
/zufang/caochangmendajie/pg5/
/zufang/caochangmendajie/pg6/
/zufang/caochangmendajie/pg7/
/zufang/caochangmendajie/pg8/
>>> 

在 scrapy shell

response.xpath("//div[@class='content__pg']/@data-totalpage").extract_first()

命令 returns '8' 给我。

你可以在你的代码中使用这个xpath,或者你可以尝试使用scrapy