8

我熟悉 BeautifulSoup 和 urllib2 从网页中抓取数据。但是,如果在返回我要抓取的结果之前需要在页面中输入参数怎么办?

我正在尝试使用此网站获取两个地址之间的地理距离: http ://www.freemaptools.com/how-far-is-it-between.htm

我希望能够进入该页面,输入两个地址,单击“显示”,然后提取“乌鸦飞的距离”和“陆路运输的距离”值​​并将它们保存到字典中。

有没有办法使用 Python 将数据输入到网页中?

4

5 回答 5

1

是的!尝试机械化这种网页屏幕抓取任务。

于 2011-08-13T00:57:14.767 回答
1

我认为你也可以使用PySide /PyQt,因为它们有一个 qtwebkit 的浏览器核心,你可以控制浏览器打开页面,模拟人类动作(填充,点击......),然后从页面中抓取数据。FMiner就是以这种方式工作的,它是我用 PySide 开发的一个网页抓取软件。

或者你可以试试 phantomjs,它是一个控制浏览器的简单库,但不是 javascript 不是 python 语言。

于 2013-08-06T02:14:01.173 回答
0

除了已经给出的答案,您可以简单地在该页面上提出请求。使用您的浏览器,当您与页面交互时,您始终可以检查网络(在工具/Web 开发人员工具下)的行为和操作。例如http://www.freemaptools.com/ajax/getaandb.php?a=Florida_Usa&b=New%20York_Usa&c=6052 -> 请求查询以获取您期望的结果页面。请求该页面并抓取您想要的字段。恕我直言,页面请求比屏幕抓取要快得多(视情况而定)。

但是当然,您也可以随时进行屏幕抓取/浏览器模拟(Mechanize、Splinter)并使用无头浏览器(PhantomJS 等)或您想要使用的浏览器的浏览器驱动程序。

于 2014-08-08T01:17:48.600 回答
0

查询可能已解决。

为此,您可以使用Selenium WebDriver 。网页可以使用编程语言进行交互。可以像人类用户访问网页一样执行所有操作。

于 2017-04-17T09:36:43.450 回答