2011-02-09 18 views
0

私はBeautifulSoupを使ってPythonのいくつかのHTMLを解析しようとしています。具体的には、スープオブジェクトの2つの配列を作成しようとしています.1つはウェブサイト上の投稿の日付用で、もう1つは投稿自体用です。しかし、投稿と一致するdivクラスでfindAllを使用すると、タグ内のテキストではなく、最初のタグだけが返されます。一方、私のコードは、日付のためにうまく動作します。何が起こっている??BeautifulSoupを使ってHTMLを解析する際の問題

# store all texts of posts 
texts = soup.findAll("div", {"class":"quote"}) 

# store all dates of posts 
dates = soup.findAll("div", {"class":"datetab"}) 

戻って上記の最初の行のみ

<div class="quote"> 

私が欲しいものではありませんています。 2行目は

<div class="datetab">Feb<span>2</span></div> 

です。私が望むのは(事前精製)です。

私は何が間違っているのか分かりません。 Hereは私が解析しようとしているウェブサイトです。これは宿題のためであり、私は本当に必死です。

答えて

1

このサイトはTumblrによって供給されていますTumblrはan APIです。

+0

ありがとうございます。私はちょうどAPIを使用して不正行為としてカウントされないことを願って... – LBR

0

文書を読むために使用できるpython port of Tumblrがあります。

from tumblr import Api 

api = Api('harvardfml.com') 
freq = {} 
posts = api.read() 
for post in posts: 
    #do something here 

あなたの偽のfindAllでは、実際のプログラムのソースコードがないと何が間違っているのか分かりません。

3

あなたはどのバージョンのBeautifulSoupを使用していますか?バージョン3.1.0 performs significantly worseと実際のHTML(読み取り:無効なHTML)が3.0.8より。このコードは3.0.8で動作します。

import urllib2 
from BeautifulSoup import BeautifulSoup 

page = urllib2.urlopen("http://harvardfml.com/") 
soup = BeautifulSoup(page) 
for incident in soup.findAll('span', { "class" : "quote" }): 
    print incident.contents 
関連する問題