我是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墙(人为地“点击”按钮),进入我正在尝试抓取的实际网页?(即使是正确的谷歌搜索词/文档页面等也会很有帮助)
1条答案
按热度按时间nxagd54h1#
最后我找到了解决这个问题的多种方法:
/?token=77c1f767bc31859fee1ffe041343fa48&allowcookies=ACCEPTEER+ALLE+COOKIES
添加到起始url就可以解决这个特定的问题CrawlSpider
而不是一个普通的蜘蛛,然后我可以添加cookie按钮的xpath作为第一个规则。Selenium
也工作,但是一个很大的麻烦,是不是真的有必要...