如何在使用scrapy时绕过'cookiewall'?

时间:2017-12-05 10:55:16

标签: python cookies scrapy scrapy-spider

我是Scrapy的新用户。在按照从网站提取数据的教程之后,我试图在论坛上完成类似的事情。

我想要的是提取论坛页面上的所有帖子(开头)。但是,这个特定的论坛有一个“饼干墙”。因此,当我想从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

我得到的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搜索术语/文档页面等也会非常有用)

1 个答案:

答案 0 :(得分:2)

最后我发现了多种方法来解决这个问题:

  • 只需在启动网址中添加/?token=77c1f767bc31859fee1ffe041343fa48&allowcookies=ACCEPTEER+ALLE+COOKIES就可以使用此特定情况
  • 我后来切换到CrawlSpider而不是普通的Spider,然后我可以添加cookie按钮的xpath作为第一个rule
  • 使用前面提到的Selenium点击按钮也有效,但是很多麻烦并不是真的有必要......