【发布时间】:2014-12-08 15:35:52
【问题描述】:
我正在尝试使用此网站获取两个地址之间的地理距离:http://www.freemaptools.com/how-far-is-it-between.htm
我希望能够进入该页面,输入两个地址,点击“显示”,然后提取“乌鸦飞的距离”和“陆路运输的距离”值并将它们保存到字典中。
有没有办法从这个网页获取输出数据(距离),我不熟悉 html,所以我不确定输出在哪里。我已经输入了数据,下面是我的代码供参考。
网页源代码:我无法破译
<tr>
<td align="right">From
<input name="pointa" type="text" value="" size="22" onkeypress="autocompletea(this.value, event)" /></td>
<td><div align="center">to</div></td>
<td><input name="pointb" type="text" value="" size="22" onkeypress="autocompleteb(this.value, event)"/></td>
<td><p role="button" tabindex="0" class="fmtbutton" onkeypress="findaandb(document.forms['inp']['pointa'].value,document.forms['inp']['pointb'].value);" onclick="findaandb(document.forms['inp']['pointa'].value,document.forms['inp']['pointb'].value);"> Show </p>
<label></label></td>
</tr>
我的代码:
import re
from mechanize import Browser
text = """ web input"""
browser = Browser()
browser.open("http://www.freemaptools.com/how-far-is-it-between.htm")
browser.select_form(nr=0)
browser['pointa'] = 'San Diego, Usa'
browser['pointb'] = 'San Francisco, Usa'
response = browser.submit()
content = response.read()
result = re.findall(r'dist', content)
print result[5]
感谢您的帮助
【问题讨论】:
-
该 Web 表单调用了一个 Javascript 函数,
findaandb。推测该函数是在内联script标记或外部.js脚本文件中定义的,它可能会修改现有页面而不是下载新页面。因此,您不能只阅读新页面,因为没有可阅读的页面。 -
你可以使用
selenium之类的东西来驱动一个真正的浏览器,或者嵌入一个JavaScript解释器并无头运行它,或者阅读JavaScript代码并尝试手动将它移植到Python,或者其他各种可能性,但在这里没有什么容易的。
标签: python web-scraping html-parsing web-crawler