0

我的输入与此类似:

<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.

我的错误在哪里?

4

1 回答 1

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'
于 2013-03-13T13:07:11.237 回答