【发布时间】:2015-09-08 11:46:00
【问题描述】:
所以我需要使用 Python 抓取一些网站,但问题是标记是随机的、非结构化的,并且很难使用。
例如
<p style='font-size: 24px;'>
<strong>Title A</strong>
</p>
<p>
<strong> First Subtitle of Title A </strong>
"Text for first subtitle"
</p>
然后会切换到
<p>
<strong style='font-size: 24px;'> Second Subtitle for Title B </strong>
</p>
然后有时新的字幕会添加到前一个字幕文本的末尾
<p>
...title E's content finishes
<strong>
<span id="inserted31" style="font-size: 24px;"> Title F </span>
</strong>
</p>
<p>
<strong> First Subtitle for Title F </strong>
</p>
足够混乱,这只是糟糕的标记。明显的模式,例如 'font-size:24px;'可以找到标题,但没有可靠的、可重复使用的方法来抓取孩子并将它们与标题相关联。
正则表达式可能有效,但我觉得随机性会导致抓取模式过于具体且不干燥。
我可以提议重写 html 并修复层次结构,但是,这是一个 wordpress 网站,我担心内容可能会在 wordpress 界面中与管理员不兼容。
任何关于更好的抓取方法或使用 wordpress 的方法的建议将不胜感激。我想尽可能避免复制/粘贴。
【问题讨论】:
-
到目前为止你尝试过什么代码?
-
你到底想刮什么?
-
@mescalinum 我试过按 font-size 属性排序,但我需要能够抓取不那么嵌套的关联内容(查找标题、获取字幕和字幕的内容),sln .问题是,所有内容都是
或 ,而不是嵌套的、有组织的方式,可以轻松使用兄弟姐妹。
标签: python html regex wordpress beautifulsoup