如何绕过一个'cookiewall'时使用scrapy?

uubf1zoe  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(122)

我是Scrapy的新用户。在学习了从网站提取数据的教程后,我正在尝试在论坛上完成类似的工作。
我想要的是提取论坛页面上的所有帖子(首先)。然而,这个论坛有一个“cookie墙”。所以当我想从http://forum.fok.nl/topic/2413069中提取帖子时,我首先需要点击“是的,我接受cookie”按钮。
我最基本的刮刀目前看起来像这样:

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

我得到的divs不是来自实际的论坛线程,而是来自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>

有没有人能给我指出正确的方向,告诉我如何绕过这个cookie墙(人为地“点击”按钮),进入我正在尝试抓取的实际网页?(即使是正确的谷歌搜索词/文档页面等也会很有帮助)

nxagd54h

nxagd54h1#

最后我找到了解决这个问题的多种方法:

  • 只需将/?token=77c1f767bc31859fee1ffe041343fa48&allowcookies=ACCEPTEER+ALLE+COOKIES添加到起始url就可以解决这个特定的问题
  • 我后来切换到一个CrawlSpider而不是一个普通的蜘蛛,然后我可以添加cookie按钮的xpath作为第一个规则。
  • 点击按钮使用前面提到的Selenium也工作,但是一个很大的麻烦,是不是真的有必要...

相关问题