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 に答える