如何检查网页的弹窗?
我想知道,能不能用Python写一个程序,自动浏览某个网站,看看有没有弹窗(比如广告或者下载提示之类的)。我听说可以用mechanize这个工具来实现这个功能。如果你能给我一些建议,比如推荐一个可以完成这个任务的库,我会非常感激。
2 个回答
1
很遗憾,Mechanize 这个浏览器似乎无法处理弹出窗口,所以弹出窗口和普通页面的标题、网址和HTML内容都是一样的。
坦白说,我觉得 Python
不是做这个工作的合适工具,在这方面有些落后。经过几个月的网络爬虫经验,我发现现在很多网站都大量使用 Javascript
,而且这个趋势还在增加。相比之下,使用像 PhantomJS 或 SlimerJS 这样的基于 Javascript
的环境会更适合你想做的事情。
如果你有条件使用 Javascript-Based
的环境,我建议你直接使用。不过,你还是可以用 Python
。PhantomJS
内置了 Ghost Driver
。你可以使用 Ghost.py 来利用 PhantomJS
的强大功能。或者你也可以使用 Selenium
和 Python
,具体可以参考 这里。
5
Mechanize 不能处理 JavaScript 和弹出窗口:
要实现这个目标,你需要使用一个真正的浏览器,不管是 无头浏览器 还是普通的浏览器。这时候 selenium
就能派上用场。它内置了对弹出对话框的支持:
Selenium WebDriver 内置了处理弹出对话框的功能。当你触发一个会打开弹窗的操作后,可以用以下代码访问这个警告框:
alert = driver.switch_to_alert()
示例(使用这个 jsfiddle):
from selenium import webdriver
url = "http://fiddle.jshell.net/ebkXh/show/"
driver = webdriver.Firefox()
driver.get(url)
button = driver.find_element_by_xpath('//button[@type="submit"]')
# dismiss
button.click()
driver.switch_to.alert.dismiss()
# accept
button.click()
driver.switch_to.alert.accept()
另见: