BeautifulSoup 如何提取标签中被<br/>隔开的内容?

2016-06-03 04:38:51 +08:00
 GhostEX

用 BS 解析这个 div 标签,然后打印结果只有第一行文字,到第一个
就结束了,这是为什么?

需要解析的内容:

<div class="text1">
- 乐视网即将复牌 关注分级基金溢价机会 </br>
- 航信转债 6 月 8 日付息登记日,每张 0.2 元</br>
- 量化模型中不同买卖时间的效果对比 & 今日翻多创业板指数</br>
- 不惑之年魔都土著夫妇如何保住自己的养老积蓄?</br>
</div>

python 代码

content_soup = soup.find('div',class_='text1').get_text()
print content_soup
5463 次点击
所在节点    问与答
5 条回复
RqPS6rhmP3Nyn3Tm
2016-06-03 05:05:47 +08:00
for 循环吧
RqPS6rhmP3Nyn3Tm
2016-06-03 05:06:47 +08:00
漏看标签了, sorry ,这里循环不管用
hiwljun
2016-06-03 07:15:54 +08:00
html = '<div class="text1"> \
- 乐视网即将复牌 关注分级基金溢价机会 </br> \
- 航信转债 6 月 8 日付息登记日,每张 0.2 元</br> \
- 量化模型中不同买卖时间的效果对比 & 今日翻多创业板指数</br> \
- 不惑之年魔都土著夫妇如何保住自己的养老积蓄?</br></div>'
soup = BeautifulSoup(html, 'lxml')
text = soup.find('div', 'text1').get_text(strip=True).encode('utf-8')
print text

测试可以取到全部内容。
YUX
2016-06-03 07:17:15 +08:00
是 html.parser 的锅
你看这样

soup = BeautifulSoup(html_doc, "html.parser")
print(soup)

输出会是什么? 是

<div class="text1">
- 乐视网即将复牌 关注分级基金溢价机会 </div>
- 航信转债 6 月 8 日付息登记日,每张 0.2 元
- 量化模型中不同买卖时间的效果对比 &amp; 今日翻多创业板指数
- 不惑之年魔都土著夫妇如何保住自己的养老积蓄?

html.parser 把第一个</br>解析成了</div>

换一个解析器就好了, 比如 lxml HTML 解析器 > pip install lxml
soup = BeautifulSoup(html_doc, "lxml")
content_soup = soup.find('div',class_='text1').get_text()
print(content_soup)

输出就是

- 乐视网即将复牌 关注分级基金溢价机会
- 航信转债 6 月 8 日付息登记日,每张 0.2 元
- 量化模型中不同买卖时间的效果对比 & 今日翻多创业板指数
- 不惑之年魔都土著夫妇如何保住自己的养老积蓄?
GhostEX
2016-06-03 07:31:59 +08:00
@YUX 有用,非常感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX