如何解析csv文件中某些列中所有行的HTML编码文本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (44)

下面是“内容”列中数据的外观图像

我在pandas中加载了一个csv文件。在“内容”列中,每行包含不同长度的html编码文本。有些就像500多个单词。我的目标是摆脱列'content'的所有行中的所有html编码。

有人可以帮助获取此代码吗?

到目前为止我只有这个... dataset = pd.read_csv('NuggetData.csv')

'Content'是表中的第9列(如果第一列为0),并且有17,000行。

内容列中的示例文本(这不是第1行的全文,也不是btw,它甚至更长):

第1行: <h2>A bold new toy commercial debuted last week, and it's got the internet talking.</h2><div><div data-reactroot="" class="push-wrapper--mobile" data-card="image"><img src="//i.upworthy.com/nugget/57e9536dca7292001f000008/attachments/toygif1-65977b573530a2407626f8a4aad22a4e.gif" class=""><div class="image-caption"><p>GIFs via Smyths Toys.</p></div></div></div><h2>In some ways, it was pretty standard because a boy's love for rocket ships isn't all that unique.</h2><div><div data-reactroot="" class="push-wrapper--mobile" data-card="image"><img src="//i.upworthy.com/nugget/57e953b8e2d8c7001f00002d/attachments/toygif2-6ef9ddacf2a56c63a84d773645450563.gif" class=""></div></div><h2>Neither is his love of Legos.</h2><div><div data-reactroot="" class="push-wrapper--mobile" data-card="image"><img src="//i.upworthy.com/nugget/57e95558e2d8c7002b000025/attachments/toygif4-4f0829dad2602f7dd6ed52813e6791a5.gif" class=""></div></div><h2>Plenty of boys like to (pretend to) drive motorcycles, too.</h2><div><div data-reactroot="" class="push-wrapper--mobile" data-card="image"><img src="//i.upworthy.com/nugget/57e95595ca72920034000029/attachments/toygif5-e1824fae63099796ac2947ba76ea185d.gif" class=""></div></div><h2>But ... playing dress-up as a queen in front of a crowd of cheering supporters?</h2><div><div data-reactroot="" class="push-wrapper--mobile" data-card="image"><img src="//i.upworthy.com/nugget/57e954c0e2d8c7002d00001e/attachments/toygif3-21ea60c5917fd80da817919c655a4c96.gif" class=""></div></div><p><em>That's</em> extraordinary. </p><h2>

提问于
用户回答回答于

我建议你使用BeautifulSoup(库)和列表推导来解析你的内容列。

首先,您需要知道HTML中需要哪些内容。我正在做一些假设来解释:

  1. 您正在寻找DIV标签中的内容(findAll('div')
  2. 假设您正在查找上一个标记内的文本(.text
  3. 你需要第三个DIV标签的文字([2]
from bs4 import BeautifulSoup as bs

dataset['parsed_content'] = [bs(x,'lxml').findAll('div')[2].text for x in dataset['content']]

使用前面的代码,您可以向数据框添加新列,在任何情况下都不会修改内容。

依赖关系可以使用pip安装BeautifulSoup和lxml。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励