因此,我一直在学习使用BeautifulSoup4,并且到目前为止取得了良好的成功。我正在Practicepython.org上进行practice problem操作,以将文章的文本正文打印到文件中。
通过检查HTML标记,我能够找到所有文本段落都位于其下的CSS类,然后遍历这些标记以获得所有的'p'标记。
url = 'http://www.vanityfair.com/society/2014/06/monica-lewinsky-humiliation-culture'
r = req.get(url)
r_html = r.text
soup = BeautifulSoup(r_html, 'html.parser')
with open('html_to_text.txt', 'w') as open_file:
for stuff in soup.find_all('div', class_='grid--item body body__container article__body grid-layout__content'):
for par in stuff.find_all('p'):
print(par.string)
问题在底部的print(par.string)
行中。根据{{3}},如果标签具有多个子项(其他标签和/或文本字符串),则.string属性将设置为None
,这正是正在发生的情况。我相信这是因为在某些段落中,存在诸如粗体,下划线,斜体之类的格式标签。 BeautifulSoup是否可以剥离所有这些内容,以便我可以打印出文章的全文而不会在出现格式化文本的地方弹出很多None
?