我有一个链接列表存储为一个列表。但我只需要提取PDF链接。在
links = [ '<a class="tablebluelink" href="https://www.samplewebsite.com/xml-data/abcdef/higjkl/Thisisthe-required-document-b4df-16t9g8p93808.pdf" target="_blank"><img alt="Download PDF" border="0" src="../Include/images/pdf.png"/></a>', '<a class="tablebluelink" href="https://www.samplewebsite.com/xml-data/abcdef/higjkl/Thisisthe-required-document-link-4ea4-8f1c-dd36a1f55d6f.pdf" target="_blank"><img alt="Download PDF" border="0" src="../Include/images/pdf.png"/></a>']
所以我只需要提取从'https'开始到pdf结尾的链接,如下所示
^{pr2}$并将此链接存储在列表中。变量'links'中有许多pdf链接。需要将所有pdf链接存储在名为“pdf_links”的变量中
有人能建议我用正则表达式来提取这个pdf链接吗? 我使用了下面的正则表达式,但它不起作用。在
pdf_regex = r""" (^<a\sclass="tablebluelink"\shref="(.)+.pdf"$)"""
每个人都会告诉你用regex处理HTML是错误的。我不想向您展示如何用这种方法来完成,我想向您展示用库解析HTML实际上是多么容易,例如经常推荐的BeautifulSoup 4。在
为了使其简单并接近示例代码,我只需展平您的输入列表。通常,您会将原始HTML直接提供给解析器(例如,请参见here)。在
简单明了,不是吗?在
正如daniellee指出的,正则表达式不适合解析HTML。但是,只要您的HTML在所有情况下都遵循特定的模式,类似这样的方法就可以做到这一点(显然,就在沙盒环境中):
首先,你不应该用regex解析html。在
“用regex解析html就像让初学者编写操作系统”
这个答案是著名的并且永远相关的: RegEx match open tags except XHTML self-contained tags
花一个小时学习匹配组在regex中的工作方式可能是值得的。但是,这可能有助于:
首先,
links
是一个列表。这意味着您要么需要遍历它,要么(在本例中)需要获取第一个元素。在试试看
相关问题 更多 >
编程相关推荐