使用BeautifulSoup解析HTML时遇到问题

0 投票
3 回答
605 浏览
提问于 2025-04-16 11:30

我正在尝试使用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

撰写回答