使用 scrapy 抓取东西时的空响应 (python)

Empty response when scraping things with scrapy (python)

提问人:Ignacio Perez vilaplana 提问时间:11/17/2023 最后编辑:Ignacio Perez vilaplana 更新时间:11/19/2023 访问量:37

问:

我正在尝试使用 scrapy 及其 ,特别是此页面来废弃一个网站(“ellenmacarthurfoundation”):Selector.css

这是网站
这是我试图抓取的网络的 html

我正在尝试获取此网络中的所有引用(<a href=new-url />),但我无法获得不同的元素。

我使用的代码是:

>>> links = response.css('.section-container li.ais-InfiniteHits-item a::attr(href)').getall()
>>> links 
[]

我不知道为什么我收到的答案是空的。如果有人能帮我处理我应该使用的字符串来获取所有链接,那就太好了。

谢谢大家!

python html 网页抓取 scrapy 网络爬虫

评论

0赞 Péter Szilvási 11/17/2023
尝试先抓取标题。然后,尝试抓取一级更深的 HTML 元素。尝试刮擦元素。尝试抓取元素的 href 属性。哦,等等!他们没有 href 属性,也许这可能是你的问题,对吧?lili
1赞 Ignacio Perez vilaplana 11/18/2023
里面有一个属性。我一直在调试,我意识到,html的那部分不在我的上面,所以我相信这部分是动态加载的。我正在尝试使用 .如果我得到什么,我会告诉你的。谢谢!href<a>response.textscrapy.linkExtractor

答:

0赞 Alireza Fathi 11/19/2023 #1

本网站上的文章是动态加载的。您无法以通常的方式抓取此内容。你有硒选项,但我建议你在 Inspect > Network > xhr 中发送此内容的查找源 api:

This is Firefox. You can find it in Chrome too.

并从网络部分提取数据和标头,并使用 POST 请求方法进行抓取,如下所示:

>>> req = scrapy.Request(url, body=json_data, method='post', headers=headers) 
>>> fetch(req)
>>> response.json()