Сырое 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 на странице (если я неверно об этом, как я могу получить информацию о том, какая информация о цене хранится?) Есть ли что-то, что мне нужно сказать механике, чтобы увидеть дерево DOM?

Как только я смогу получить дерево DOM в python, все остальное, что мне нужно сделать, должно быть быстрым. Благодаря!

One Solution collect form web for “Сырое HTML против DOM соскабливания в питоне с использованием механизации и красивого супа”

Механизируйте и Красивый суп – это неиспользуемые инструменты для веб-утилизации на питоне.

Но вам нужно понять, что предназначено для чего:

Mechanize : он имитирует функциональность браузера на веб-странице.

BeautifulSoup : HTML отлично работает, даже если HTML не является корректным.

Ваша проблема, кажется, javascript . Цена заселяется через вызов ajax с помощью javascript . Mechanize , однако, не делает javascript, поэтому любой контент, который возникает из javascript, останется невидимым для механизации.

Взгляните на это: http://github.com/davisp/python-spidermonkey/tree/master

Это делает обертку механизированным и красивым супом с исполнением js.

Python - лучший язык программирования в мире.