0

HTML ページをクロールしていて、img src と a href を抽出したいと考えています。

特定のサイトでは、それらはすべて二重引用符で囲まれています。

さまざまな正規表現を試しましたが、成功しませんでした。二重引用符内の文字は [-\w/] (印刷可能な文字 [a-zA-Z\d-_] および / および .) であると仮定します。

パイソンでは:

re.search(r'img\s+src="(?P<src>[\w-/]+_"', line)

何も返しませんが、

re.search(r'img\s+src="(?P[-\w[/]]+)"', line)

wayy を多く返します (つまり、" で止まらない)。

正しい正規表現を作成する助けが必要です。前もって感謝します!

4

3 に答える 3

6

正しい正規表現を作成する助けが必要です。

いいえ、適切なツールを見つけるには助けが必要です。

BeautifulSoupをお試しください。

(正規表現の使用を主張する場合は、私はそれをお勧めしませんが、 greedy+を non-greedy に変更してみてください+?)。

于 2012-04-27T15:53:21.943 に答える
5

優れたlxmlライブラリとxpathを使用して、正規表現よりも優れた方法の例を次に示します。


In [1]: import lxml.html
In [2]: doc = lxml.html.parse('http://www.google.com/search?q=kittens&tbm=isch')
In [3]: doc.xpath('//img/@src')
Out[3]: 
['/images/nav_logo_hp2.png',
 'http://t1.gstatic.com/images?q=tbn:ANd9GcQhajNZimPGLw9iTfzrAF_HV5UogY-KGep5WYgw-VHZ15oaAwGquNb5Q2I',
 'http://t2.gstatic.com/images?q=tbn:ANd9GcS1LgVIlDgoIfNzwU4xBz9fL32ZJjZU26aB4aynRsEcz2VuXmjCtvxUonM',
 'http://t1.gstatic.com/images?q=tbn:ANd9GcRgouJt5Moe8uTnDPUFTo4csZOcBtEDA_B7WdRPe8pdZroR5QB2q_-LT59G',
 [...]
]
于 2012-04-27T16:06:33.057 に答える
2

あなたが行う引用符の中にあるものを見つけるための良いトリック"([^"]+)"。したがって、引用符の間にある引用符以外の文字を検索します。

正規表現の作成については、Expresso(http://www.ultrapico.com/Expresso.htm)を強くお勧めします。

于 2012-04-27T15:55:47.450 に答える