使用beautifulsoup在html元素中获取数据

时间:2012-11-05 10:05:24

标签: beautifulsoup

到目前为止我已经这样做了:

import urllib2,re,time
from bs4 import BeautifulSoup
base_url="http://nairobinow.wordpress.com/"
rawEventsData=urllib2.urlopen(base_url).read()
rawEventssoup = BeautifulSoup(rawEventsData)
events=rawEventssoup.findAll("div", {"id": re.compile(r'post-[\d+]')}) 

现在我想获取标签,场地和日期之后的数据。这是事件块(只是其中一个迭代部分):

<div class="post-17149 post type" id="post-17149">
<h2><a href="http://nairobinow.wordpress.com/2012/11/05/out/">Out of Town: Lamuest</a> 
</h2><p>u
Dates: November 15-18, 2012<br/>
Venue: Lamu</p>
<p>Accommodation information: <a href="http://.../index.html"target="_blank"  
>http://www.lamu.org/index.html</a></p></div>

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,听起来您对<p>标签中的数据感兴趣。如果这是正确的......

如果您还不知道,.findAll()会返回一个列表。在这种情况下,将返回具有相应div的任何id

您需要做的只是迭代events

for event in events:
    print event('p')[0]

这将返回:

<p>u Dates: November 15-18, 2012<br/> Venue: Lamu</p>

使用.contents删除标签。请注意.contents将根据其索引调用文本。即:.contents[0]可能会返回Dates: November 15-18,,而.contents[1]可能会返回Venue: Lamu

你应该玩这个,找到适合你的需求。我希望这回答了这个问题,它有点含糊不清,但不管怎么说我还是试了一下。