【发布时间】:2022-04-18 23:33:59
【问题描述】:
我是 Scrapy 的新用户。在遵循从网站提取数据的教程之后,我正在尝试在论坛上完成类似的事情。
我想要的是提取论坛页面上的所有帖子(开始)。但是,这个特定的论坛有一个“cookie wall”。因此,当我想从http://forum.fok.nl/topic/2413069 中提取信息时,我首先需要单击“是的,我接受cookies”按钮。
我非常基本的刮板目前看起来像这样:
class FokSpider(scrapy.Spider):
name = 'fok'
allowed_domains = ['forum.fok.nl']
start_urls = ['http://forum.fok.nl/']
def parse(self,response):
divs = response.xpath("//div").extract()
yield {'divs': divs}
pass
我得到的 div 不是来自实际的论坛帖子,而是来自 cookie 墙。
这是按钮的html:
<a href="javascript:acceptCookies()" class="button acc CookiesOK" onclick="document.forms['cookies'].submit();acceptCookies();">Ja, Ik wil een goed werkende site...<span class="smaller">...en accepteer de cookies</span></a>
谁能指出我如何绕过这个 cookiewall(人为地“点击”按钮)并转到我要抓取的实际网页的正确方向? (即使是正确的 Google 搜索词/文档页面等也会很有帮助)
【问题讨论】:
-
extract需要()来运行它。 -
如果页面使用
JavaScript,那么您可能需要Selenium来控制将加载页面并运行JavaScript的网络浏览器。或者你必须分析 JavaScript 的代码,找出它使用的 url,然后用 Python 做同样的事情。
标签: python cookies scrapy scrapy-spider