我的输入与此相似:
<a href="link">text</a> <a href="correctLink">See full summary</a>
从此字符串中我只想获得correctLink
(查看完整摘要的链接为文本)。
我正在使用python,我尝试过:
re.compile( '<a href="(.*?)">See full summary</a>', re.DOTALL | re.IGNORECASE )
但我使用findall()
获得的唯一字符串是link">text</a> <a href="correctLink
。
我的错误在哪里?
答案 0 :(得分:1)
将链接模式限制为非引号字符:
re.compile('<a href="([^"]+?)">See full summary</a>', re.DOTALL | re.IGNORECASE)
,并提供:
>>> import re
>>> patt = re.compile('<a href="([^"]+?)">See full summary</a>', re.DOTALL | re.IGNORECASE)
>>> patt.findall('<a href="link">text</a> <a href="correctLink">See full summary</a>')
['correctLink']
更好的是,使用正确的HTML解析器。
使用BeautifulSoup,找到该链接就像以下一样简单:
soup.find('a', text='See full summary')['href']
用于精确的文字匹配:
>>> from bs4 import BeautifulSoup
>>> soup=BeautifulSoup('<a href="link">text</a> <a href="correctLink">See full summary</a>')
>>> soup.find('a', text='See full summary')['href']
u'correctLink'