使用mechanize和beautiful soup在python中进行原始HTML与DOM抓取

2024-10-01 05:05:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图写一个程序,作为一个例子,将从这个网页的最高价格:

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的开发人员工具页面视图时看到的(如果我不正确,我该如何获取存储在其中的价格信息?)为了查看DOM树,我需要告诉mechanize做些什么吗?在

一旦我可以将DOM树放入python中,我需要做的其他事情都应该很简单。谢谢!在


Tags: fromimportcomhttpdatahtmlwww价格
2条回答

在python中,Mechanize和Beautiful soup是不可击败的web清除工具。在

但你需要明白什么是什么意思:

Mechanize:它模仿网页上的浏览器功能。在

BeautifulSoup:HTML解析器,即使在HTML格式不好的情况下也能正常工作。在

你的问题似乎是javascript。价格是通过使用javascript的ajax调用填充的。^然而,{}不执行javascript,因此javascript产生的任何内容对于mechanize都是不可见的。在

看看这个:http://github.com/davisp/python-spidermonkey/tree/master

这是一个使用js执行的mechanize和Beautiful soup的包装器。在

回答我自己的问题,因为从问起这些年来,我学到了很多。今天我将使用Selenium Webdriver来完成这项工作。Selenium正是我在2012年为这种类型的web抓取项目寻找的工具。在

https://www.seleniumhq.org/download/

http://chromedriver.chromium.org/

相关问题 更多 >