如何检查网页的弹窗?

1 投票
2 回答
5229 浏览
提问于 2025-04-18 09:41

我想知道,能不能用Python写一个程序,自动浏览某个网站,看看有没有弹窗(比如广告或者下载提示之类的)。我听说可以用mechanize这个工具来实现这个功能。如果你能给我一些建议,比如推荐一个可以完成这个任务的库,我会非常感激。

2 个回答

1

很遗憾,Mechanize 这个浏览器似乎无法处理弹出窗口,所以弹出窗口和普通页面的标题、网址和HTML内容都是一样的。

坦白说,我觉得 Python 不是做这个工作的合适工具,在这方面有些落后。经过几个月的网络爬虫经验,我发现现在很多网站都大量使用 Javascript,而且这个趋势还在增加。相比之下,使用像 PhantomJSSlimerJS 这样的基于 Javascript 的环境会更适合你想做的事情。

如果你有条件使用 Javascript-Based 的环境,我建议你直接使用。不过,你还是可以用 PythonPhantomJS 内置了 Ghost Driver。你可以使用 Ghost.py 来利用 PhantomJS 的强大功能。或者你也可以使用 SeleniumPython,具体可以参考 这里

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()

另见:

撰写回答