在Beautifulsoup .find无法找到文字

时间:2015-05-10 22:36:56

标签: python html beautifulsoup posts downloading

我必须从论坛下载所有帖子:http://forum.ubuntu.cz/我在Python 2.7中编写代码

我遍历for循环表中的所有帖子(表格代表<form name = "quickModForm" >),每个帖子都在<div class = "windowbg">class = "windowbg2"。每篇文章都包含<div class = "poster"><div class = "postarea">。来自&#34;海报&#34;我提取作者的名字,并从&#34; postarea&#34;我提取帖子的发帖时间和内容。

当我在此页面上运行我的代码http://forum.ubuntu.cz/index.php?topic=5279.0时,我成功阅读了第一篇文章而不是第二篇文章。

以下是我的代码的一部分:

posts = urllib2.urlopen(link)
posts_soup = BeautifulSoup(posts.read()) 

form = prispevky_soup.find("form", {"name": "quickModForm"})
for divs in form.find_all("div", { "class": [ "windowbg", "windowbg2"]}):

    div = divs.find("div", {"class": "post_wrapper"})
    div_body = div.find("div", {"class": "postarea"})
    div_header = div.find("div", {"class": "poster"})

我发现在div_header中始终是我需要的所有信息,在div_body的某些帖子中是None,我无法找到为什么第一次迭代成功而第二次迭代只是部分,因为 div_header = divs.find("div", {"class": "poster"})正常运作和 div_body = divs.find("div", {"class": "postarea"})有时不会。帖子的源代码非常相似。

感谢您的帮助,对不起我的英语。

1 个答案:

答案 0 :(得分:0)

使用get_text()方法获取html标记之间的文本,如下所示:

div = divs.find("div", {"class": "post_wrapper"}).get_text()
div_body = div.find("div", {"class": "postarea"}).get_text()
div_header = div.find("div", {"class": "poster"}).get_text()