我正在尝试编写一个程序,作为示例,该程序将从该网页上刮掉最高价格:
http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults
首先,我可以通过执行以下操作轻松检索 HTML:
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
import mechanize
webpage = 'http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults'
br = mechanize.Browser()
data = br.open(webpage).get_data()
soup = BeautifulSoup(data)
print soup
但是,原始 HTML 不包含价格。浏览器会...它的事情(这里的澄清也可能对我有帮助)...并在构建 DOM 树时从其他地方检索价格。
我被引导相信 mechanize 会像我的浏览器一样运行并返回 DOM 树,我也被引导相信这就是我在查看时看到的,例如,Chrome 的开发者工具页面视图(如果我是对此不正确,我该如何获取存储价格信息的内容?)我需要告诉 mechanize 做什么才能看到 DOM 树?
一旦我可以将 DOM 树导入到 python 中,我需要做的其他事情就变得轻而易举了。谢谢!
Mechanize 和 Beautiful soup 是 Python 中无与伦比的网络抓取工具。
但您需要了解其含义:
Mechanize
:它模仿网页上的浏览器功能。
BeautifulSoup
:HTML 解析器,即使在 HTML 格式不正确时也能正常工作。
你的问题似乎是javascript
。价格通过 ajax 调用填充javascript
. Mechanize
但是,它不执行 javascript,因此由 javascript 生成的任何内容对于机械化来说都是不可见的。
看看这个 :http://github.com/davisp/python-spidermonkey/tree/master http://github.com/davisp/python-spidermonkey/tree/master
这通过 js 执行对 mechanize 和 Beautiful soup 进行了包装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)