Selenium:要求什么功能?

时间:2014-07-29 19:57:17

标签: python web-services selenium

我是Selenium和Web应用程序的新手。如果我的问题看起来太明显了,请耐心等一下。这是我的故事。

我在Python编写了一个使用Selenium2.0 Webdriver抓取AJAX网页的抓取工具。最大的挑战之一(和道德规范)是我不想烧毁网站的服务器。因此,我需要一种方法来监控我的webdriver在解析的每个页面上触发的请求数。

我做了一些谷歌搜索。似乎只有selenium-RC提供了这样的功能。但是,我不想因为这个原因重写我的代码。作为妥协,我决定限制方法调用的速率,这可能会导致无头浏览器向服务器发送请求。

在脚本中,我有以下类型的方法调用:

driver.find_element_by_XXXX()
driver.execute_script()
webElement.get_attribute()
webElement.text

我使用第二个函数滚动到窗口底部并获取AJAX内容,如下所示:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

根据我的直觉,只有第二个函数会触发请求触发,因为其他函数似乎解析现有的html内容。

我的直觉是错的吗?

非常感谢


也许我应该详细说明。我正在Python中自动执行抓取网站的过程。完成了大量的工作,脚本运行时没有大错误。

然而,我的同事提醒我,如果在抓取页面的过程中我在很短的时间内对AJAX列表提出了太多请求,我可能会被服务器禁止。这就是为什么我开始寻找一种方法来监控我从脚本中的无头PhantomJS浏览器发出的请求数量。

由于我找不到监控脚本中请求数量的方法,我做了上面提到的妥协。

1 个答案:

答案 0 :(得分:1)

  

因此我需要一种方法来监控我的webdriver的请求数量   在解析的每个页面上触发

据我所知,请求的数量取决于网页的设计,即网页使用的资源和Javascript / AJAX的请求。 Webdriver将打开浏览器并像普通用户一样加载网页。

在Chrome中,您可以使用Developer Tools面板查看请求和回复。您可以参考this postDeveloper Tools的当前UI设计不同,但基本功能仍然相同。或者,您也可以使用Firefox中的Firebug插件。


<强>更新

检查请求和响应的另一种方法是使用Wireshark。请参阅这些Wireshark filters