我正在尝试使用python框架Scrapy从网站上删除数据。我可以使用蜘蛛从网站上获取数据,但是当我尝试浏览网站时会出现问题。
根据this帖子,Scrapy不能很好地处理Javascript。
另外,如接受的答案中所述,我不能使用mechanize或lxml。它建议使用Selenium and Scrapy
。
按钮的功能:
我正在浏览网站上的优惠。按钮的功能 是为了显示更多优惠。所以点击它,它调用一个JavaScript 加载结果的函数。
我也在看CasperJS and PhantomJS
。他们会工作吗?
我只需要自动点击一个按钮。我该怎么做?
答案 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
进行蜘蛛内的模拟。