我希望解析解析包含html锚标记的原始文档,但不幸的是它包含无效标记,例如:
<a href="A 4"drive bay">some text here</a>
我知道href
值可能不是实际链接,但让我们保持这种方式。现在我需要的是检索href值'A 4"drive bay'
和链接文本'some text here'
。
我正在使用python,我已经尝试了python库“BeautifulSoup”,它在检索所有锚标签时效果很好。但问题是当它遇到提到的无效锚标记时标记错误,其中href值包含'“'。原始数据中存在这样的情况我正在解析和修改这样的数据不是选项..
使用BeautifulSoup的我的python代码的一部分是:
sub_s = BeautifulSoup(line)
for l in sub_s.find_all('a'):
l.replace_with(l.string)
print str(sub_s),
代码只是将锚标记替换为纯文本
如果有人可以帮我解决这个问题,我会非常感激... 正则表达式也会这样做.. ^^
答案 0 :(得分:0)
我猜您可以通过正则表达式预先过滤输入文本以纠正此特定问题。类似的东西:
>>> r = re.compile('''<a[^>]+href="([^>]+)">''')
>>> m = r.match(text)
>>> m.group(1)
'A 4"drive bay'
>>> r.sub('<a href="%s">' % m.group(1).replace('"', ' '), text)
'<a href="A 4 drive bay">some text here</a>'
这不是一个完整的解决方案;只是想知道如何前进。
答案 1 :(得分:0)
Selfhtm 8.1.2(德国经常使用的HTML文档)建议:
我使用以下正则表达式来确保第一个要求:
name="[^a-zA-Z]
(n。b。第一个领先的空间似乎不那么重要,适用于大多数正则表达式实现,例如来自helios的textpad编辑器)
为了简化工作,我还有另一个要求的正则表达式:它还捕获一个字符锚(它们是有效的),但它将有助于识别可能的问题:
name=".?[^a-zA-Z0-9_\.-][^"]*"
我使用语法检查程序找到的大多数其他问题。