使用BeautifulSoup解析HTML时遇到问题
我正在尝试使用BeautifulSoup在Python中解析一些HTML。具体来说,我想创建两个数组,一个用来存放网站上发布的日期,另一个用来存放这些发布的内容。不过,当我在与发布内容匹配的div类上使用findAll时,只返回了初始标签,而没有返回标签里面的文本。另一方面,我的代码在处理日期时却没有问题。这到底是怎么回事呢?
# 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">
这不是我想要的。第二行返回了
<div class="datetab">Feb<span>2</span></div>
这正是我想要的(在进一步处理之前)。
我完全不知道自己哪里出错了。这里是我想要解析的网站。这是我的作业,我真的很着急。
3 个回答
0
有一个可以用来读取文档的Python版Tumblr。
from tumblr import Api
api = Api('harvardfml.com')
freq = {}
posts = api.read()
for post in posts:
#do something here
关于你提到的findAll功能,如果没有你程序的实际源代码,很难判断哪里出了问题。
1
这个网站是由Tumblr提供支持的。Tumblr有一个API。
3
你正在使用哪个版本的BeautifulSoup?版本3.1.0在处理真实的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