内容提取与Beautiful Soup的帮助
我正在尝试从一个网站提取数据,数据的格式是这样的:
<div id=storytextp class=storytextp align=center style='padding:10px;'>
<div id=storytext class=storytext>
<div class='a2a_kit a2a_default_style' style='float:right;margin-left:10px;border:none;'>
..... extra stuff
</div> **Main Content**
</div>
</div>
请注意,MainContent里面可能会有其他标签,但我想要的是整个内容,像一个字符串一样。
所以我做了以下操作:
_divTag = data.find( "div" , id = "storytext" )
innerdiv = _divTag.find( "div" ) # find the first div tag
innerdiv.contents[0].replaceWith("") # replace with null
这样的话,_divTag里就只会有主要内容,但这并没有成功。有人能告诉我我哪里出错了吗?我应该怎么提取主要内容呢?
1 个回答
2
你只需要用 _divTag.contents[2]
就可以了。
你的格式可能让你产生了误解——这段文本并不属于最里面的那个 div 标签(像 innerdiv.text
、innerdiv.contents
或 innerdiv.findChildren()
会告诉你这一点)。
如果你把原始的 XML 缩进一下,会让事情更清楚:
<div id=storytextp class=storytextp align=center style='padding:10px;'>
<div id=storytext class=storytext>
<div class='a2a_kit a2a_default_style' style='float:right;margin-left:10px;border:none;'>
..... extra stuff
</div> **Main Content**
</div>
</div>
(顺便说一下,我不太明白你用 innerdiv.contents[0].replaceWith("")
的意图是什么?是想去掉属性吗?还是想去掉换行符?总之,BS 的理念是不去修改解析树,而是简单地忽略你不关心的 99.9% 的内容。BS 的文档可以在 这里 找到。)