我是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搜索术语/文档页面等也会非常有用)
答案 0 :(得分:2)
最后我发现了多种方法来解决这个问题:
/?token=77c1f767bc31859fee1ffe041343fa48&allowcookies=ACCEPTEER+ALLE+COOKIES
就可以使用此特定情况CrawlSpider
而不是普通的Spider,然后我可以添加cookie按钮的xpath作为第一个rule。 Selenium
点击按钮也有效,但是很多麻烦并不是真的有必要......