我熟悉 BeautifulSoup 和 urllib2 从网页中抓取数据。但是,如果在返回我要抓取的结果之前需要在页面中输入参数怎么办?
我正在尝试使用此网站获取两个地址之间的地理距离: http ://www.freemaptools.com/how-far-is-it-between.htm
我希望能够进入该页面,输入两个地址,单击“显示”,然后提取“乌鸦飞的距离”和“陆路运输的距离”值并将它们保存到字典中。
有没有办法使用 Python 将数据输入到网页中?
我熟悉 BeautifulSoup 和 urllib2 从网页中抓取数据。但是,如果在返回我要抓取的结果之前需要在页面中输入参数怎么办?
我正在尝试使用此网站获取两个地址之间的地理距离: http ://www.freemaptools.com/how-far-is-it-between.htm
我希望能够进入该页面,输入两个地址,单击“显示”,然后提取“乌鸦飞的距离”和“陆路运输的距离”值并将它们保存到字典中。
有没有办法使用 Python 将数据输入到网页中?
看看诸如机械化或刮擦之类的工具:
http://www.ibm.com/developerworks/linux/library/l-python-mechanize-beautiful-soup/
Packt Publishing 也有一篇关于这个问题的文章:
是的!尝试机械化这种网页屏幕抓取任务。
除了已经给出的答案,您可以简单地在该页面上提出请求。使用您的浏览器,当您与页面交互时,您始终可以检查网络(在工具/Web 开发人员工具下)的行为和操作。例如http://www.freemaptools.com/ajax/getaandb.php?a=Florida_Usa&b=New%20York_Usa&c=6052 -> 请求查询以获取您期望的结果页面。请求该页面并抓取您想要的字段。恕我直言,页面请求比屏幕抓取要快得多(视情况而定)。
但是当然,您也可以随时进行屏幕抓取/浏览器模拟(Mechanize、Splinter)并使用无头浏览器(PhantomJS 等)或您想要使用的浏览器的浏览器驱动程序。
查询可能已解决。
为此,您可以使用Selenium WebDriver 。网页可以使用编程语言进行交互。可以像人类用户访问网页一样执行所有操作。