我是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
浏览器发出的请求数量。
由于我找不到监控脚本中请求数量的方法,我做了上面提到的妥协。
答案 0 :(得分:1)
因此我需要一种方法来监控我的webdriver的请求数量 在解析的每个页面上触发
据我所知,请求的数量取决于网页的设计,即网页使用的资源和Javascript / AJAX的请求。 Webdriver将打开浏览器并像普通用户一样加载网页。
在Chrome中,您可以使用Developer Tools
面板查看请求和回复。您可以参考this post。 Developer Tools
的当前UI设计不同,但基本功能仍然相同。或者,您也可以使用Firefox中的Firebug
插件。
<强>更新强>
检查请求和响应的另一种方法是使用Wireshark。请参阅这些Wireshark filters。