网页抓取:自动点击按钮

时间:2015-01-07 05:56:34

标签: javascript python selenium web-scraping scrapy

我正在尝试使用python框架Scrapy从网站上删除数据。我可以使用蜘蛛从网站上获取数据,但是当我尝试浏览网站时会出现问题。

根据this帖子,Scrapy不能很好地处理Javascript。

另外,如接受的答案中所述,我不能使用mechanize或lxml。它建议使用Selenium and Scrapy

的组合

按钮的功能:

  

我正在浏览网站上的优惠。按钮的功能   是为了显示更多优惠。所以点击它,它调用一个JavaScript   加载结果的函数。

我也在看CasperJS and PhantomJS。他们会工作吗?

我只需要自动点击一个按钮。我该怎么做?

1 个答案:

答案 0 :(得分:4)

首先,是的 - 您可以将PhantomJS ghostdriver与python一起使用。它内置于python-selenium

pip install selenium

演示:

>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('https://stackoverflow.com/questions/27813251')
>>> driver.title
u'javascript - Web scraping: Automating button click - Stack Overflow'

还有其他一些线程提供了“scrapy + selenium”蜘蛛的例子:

此外还有一个scrapy-webdriver module可能对它有帮助。


使用带有硒的scrapy会给你带来巨大的开销,并且即使使用无头PhantomJS浏览器也会大幅减慢速度。

您很有可能通过模拟底层请求获取所需数据来模仿“显示更多优惠”按钮。使用浏览器开发人员工具来探索触发的请求类型,并使用scrapy.http.Request进行蜘蛛内的模拟。