2012-03-04 7 views
3

生のHTML私は例として、このWebページのオフトップ価格をこすります、プログラムを書き込もうとしています

http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults

ファースト

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ツリーを見るために機械化するために必要なことはありますか?

私のpythonにDOMツリーを取得することができたら、私が行う必要がある他のすべては、スナップする必要があります。ありがとう!

答えて

0

これを聞いてから何年もの間、私は多くのことを学んだので、私自身の質問に答えます。今日、私はこの仕事をするためにSelenium Webdriverを使用します。セレンは、私がこのタイプのウェブスクレイピングプロジェクトのために2012年に探していたものです。

3

Mechanizeのと美しいスープは非beatableツールのWebスクラップpythonです。

しかし、あなたは何のために何を意味するかを理解する必要があります。それは、Webページ上のブラウザの機能を模倣:

Mechanize

BeautifulSoup:HTMLが整形式でない場合であってもHTMLパーサーは、うまく動作します。

あなたの問題はjavascriptのようです。価格は、javascriptを使用してajaxコールを介して入力されています。しかし、Mechanizeはjavascriptを行っていないので、javascriptの結果であるコンテンツは機械化することができません。

はこれを見てください:http://github.com/davisp/python-spidermonkey/tree/master

これはMechanizeのとjsの実行と美しいスープのラッパーを行います。

+1

私は約4年前に美しいスープについて同意したかもしれません... – pguardiario

+0

Ellaborate ..... –

+0

最近、libxml2ベースのパーサは美しいスープを打ち負かすでしょう。 – pguardiario

関連する問題