我熟悉BeautifulSoup和urllib2来从网页上抓取数据。但是,如果在我想要刮取的结果返回之前需要在页面中输入参数怎么办?
我正在尝试使用此网站获取两个地址之间的地理距离:http://www.freemaptools.com/how-far-is-it-between.htm
我希望能够转到页面,输入两个地址,单击“显示”,然后提取“距离作为乌鸦飞行”和“按陆地运输距离”值并将其保存到字典中。< / p>
有没有办法使用Python将数据输入网页?
答案 0 :(得分:3)
看看机械化或刮擦等工具:
http://www.ibm.com/developerworks/linux/library/l-python-mechanize-beautiful-soup/
Packt Publishing也有一篇关于此事的文章:
答案 1 :(得分:1)
是的!尝试mechanize进行此类网页抓屏任务。
答案 2 :(得分:1)
我认为你也可以使用PySide / PyQt,因为他们有qtwebkit的浏览器核心,你可以控制浏览器打开页面,模拟人类动作(填充,点击......),然后刮取数据来自页面。 FMiner就是这样做的,它是我用PySide开发的网络抓取软件。
或者你可以试试phantomjs,它是一个简单的库来控制浏览器,但不是它的javascript而不是python语言。
答案 3 :(得分:0)
除了已经给出的答案之外,您还可以在该页面上执行请求。使用浏览器,您可以在与页面交互时检查网络(在工具/ Web开发人员工具下)的行为和操作。例如。 http://www.freemaptools.com/ajax/getaandb.php?a=Florida_Usa&b=New%20York_Usa&c=6052 - &gt;请求获取您期望的结果页面的查询。请求该页面并刮掉您想要的字段。恕我直言,页面请求比屏幕抓取(个案基础)更快。
但是,当然,您也可以随时进行屏幕抓取/浏览器模拟(Mechanize,Splinter)并使用无头浏览器(PhantomJS等)或您要使用的浏览器的浏览器驱动程序。
答案 4 :(得分:0)
查询可能已经解决。
您可以使用 Selenium WebDriver 来实现此目的。可以使用编程语言来交互网页。所有操作都可以像人类用户访问网页一样执行。