写爬虫的时候,为什么用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
我需要解析这个网站元素的页数
代码:
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