我必须从论坛下载所有帖子: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"})
有时不会。帖子的源代码非常相似。
感谢您的帮助,对不起我的英语。
答案 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()