编程语言
首页 > 编程语言> > 使用机械化和漂亮的汤在python中进行原始HTML与DOM抓取

使用机械化和漂亮的汤在python中进行原始HTML与DOM抓取

作者:互联网

我正在尝试编写一个程序,举例来说,该程序将使该网页的最高价失去作用:

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树时从其他位置检索价格.

我被认为机械化将像浏览器一样工作并返回DOM树,我也被认为是我浏览时看到的内容,例如,Chrome的页面的Developer Tools视图(如果对此不正确,我该如何获取存储在其中的任何价格信息?)为了告诉DOM树,我需要告诉机械化做些什么吗?

一旦我将DOM树放入python中,我需要做的所有其他事情都应该很快完成.谢谢!

解决方法:

机械化和美丽汤是python中无与伦比的网络抓取工具.

但是您需要了解含义是什么:

机械化:它模仿网页上的浏览器功能.

BeautifulSoup:HTML解析器即使在HTML格式不正确的情况下也可以正常工作.

您的问题似乎是javascript.通过使用javascript的ajax调用填充价格.但是,机械化不会执行javascript,因此,由javascript产生的任何内容都将保持不可见状态以进行机械化.

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

这通过js执行对机械化和Beautiful汤做了一个包装.

标签:dom,mechanize,screen-scraping,python
来源: https://codeday.me/bug/20191201/2082398.html