2012-04-27 155 views
0

我爬過一個HTML頁面,我想提取img srcs和一個hrefs。正則表達式來解析HTML imgs

在特定的網站上,它們都被封裝在雙引號中。

我試過各種各樣的正則表達式沒有成功。假定雙引號內的字符將是[ - \ W /](可打印的字符[A-ZA-Z \ d-_]和/和。)

在蟒:

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

隱而不宣」 T迴流什麼,但

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

返回wayy得多(即,不會在「停止)。

我需要幫助創建預先正確的正則表達式。謝謝!

+1

Obligatory:http://stackoverflow.com/a/1732454/350351 – Daenyth 2012-04-27 15:54:57

+0

確實,不能用正則表達式來解析html,但是你可以在裏面找到某些東西,對於快速腳本等等,它可能是正確的工具。 – OlliM 2012-04-27 15:58:00

+0

@達尼,是的,我知道。我已經爲定期和上下文無關語法的抽象引理指導了許多人。我試圖找到的正則表達式只是標籤內的一個字段,這當然是非常規則的。 – 2012-04-27 16:04:49

回答

2

一個很好的訣竅,可以在你做的引號內找到東西"([^"]+)"。所以你搜索任何字符,但是引號之間的引號。

有關創建正則表達式,我可以強烈推薦快報幫助(http://www.ultrapico.com/Expresso.htm

6

我需要幫助創建正確的正則表達式。

不,您需要尋找合適工具的幫助。

嘗試BeautifulSoup

(如果您上使用正則表達式堅持 - 我會建議反對 - 嘗試改變貪婪+非貪婪+?)。

+2

或[lxml](http://lxml.de/)用於'xpath'支持。 – RanRag 2012-04-27 15:54:09

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', 
[...] 
]