我对Scrapy还很陌生,但我正在设计一个网络抓取工具来从GoFundMe中提取某些信息,特别是在这种情况下,有多少人为一个项目捐款。我已经写了一个xpath语句,它在Chrome中运行良好,但在Scrapy中返回null。
一个随机的例子是https://www.gofundme.com/f/passage/donations,它目前有22个捐赠。当在Chrome inspect中输入以下内容时,我会得到我需要的“捐赠(22)”-
//h2[@class="heading-5 mb0"]/text()然而,在我的Scrapy爬行器中,以下结果为空-
class DonationsSpider(scrapy.Spider):
name = 'get_donations'
start_urls = [
'https://www.gofundme.com/f/passage/donations'
]
def parse(self, response):
amount_of_donations = response.xpath('//h2[@class="heading-5 mb0"]/text()').extract_first()
yield{
'Donations': amount_of_donations
}有人知道为什么Scrapy看不到这个值吗?
我这样做是为了找出蜘蛛的其余部分需要循环多少次,因为当我硬编码这个值时,它没有问题,并产生了所有的捐赠。
发布于 2020-02-14 22:12:16
嗯,因为有许多请求正在进行中,实现请求"https://www.gofundme.com/f/passage/donations“。哪里
利用它读取javascript代码并从不同端点获取所有响应来满足您请求,您的chrome足够聪明,能够理解JavaScript
有一个对端点"https://gateway.gofundme.com/web-gateway/v1/feed/passage/counts“的请求,它加载您正在查找的数据。这是你的python脚本不能做的,也不推荐你这样做。
相反,您可以直接调用该api并获得数据,好消息是端点响应非常结构化、易于解析的JSON数据。
我相信您也在寻找来自端点"https://gateway.gofundme.com/web-gateway/v1/feed/passage/donations?limit=20&offset=0&sort=recent“的数据。
有关更多信息,请参阅我的clicking here博客
https://stackoverflow.com/questions/60194589
复制相似问题