2011-05-08 176 views
1

圖像鏈接從HTML/RSS網頁摘要蟒蛇:從HTML

[...]<div class="..." style="..."></div><p><a href="..." 
<img alt="" heightt="" src="http://link.to/image" 
width="" /></a><span style="">[...] 

我想要得到的圖片src鏈接 「http://link.to/image.jpg」。我如何在Python中做到這一點?謝謝。

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2011-05-08 11:05:15

+0

是它的HTML或RSS?這是一個重要的區別。正確的答案是使用正確的解析器,我相信Python有這些解析器。 – svick 2011-05-08 11:18:52

+0

好的RSS我應該使用解析器,但如果它是html? – SandyBr 2011-05-08 11:21:25

回答

0

也許你應該閱讀Regex Howto教程,並在StackOverflow的一個常見問題,從中說,只要你是在處理個XML(HTML)不使用正則表達式,而是用良好的解析器和你的情況,BeautifulSoup是一個開始。

使用正則表達式,你會做這樣得到的圖片鏈接:

import re 
pattern = re.compile(r'src="(http://.*\.jpg)"') 
pattern.search("yourhtmlcontainingtheimagelink").group(1) 
+1

從使用正則表達式的先發制人的勸阻,我喜歡它:) – Acorn 2011-05-08 11:36:10

+0

如果圖像是PNG會怎麼樣:我會使用pattern = re.compile(r'src =「(。*?)」') – SandyBr 2011-05-08 11:42:00

+0

'jpg'你可以使用'png'。如果你這樣做,它會給所有的src鏈接(.html等),而不僅僅是圖像。 – 2011-05-08 11:45:57

0

爲了增加svick的回答, 嘗試使用BeautifuSoup分析器,它在過去爲我工作。

4

lxml是工作的工具。

要颳去所有從網頁圖像會是如此簡單:

import lxml.html 

tree = lxml.html.parse("http://example.com") 
images = tree.xpath("//img/@src") 

print images 

,並提供:

['/_img/iana-logo-pageheader.png', '/_img/icann-logo-micro.png']

如果它是一個RSS feed,你會想分析它與lxml.etree

0

使用urllib而beautifulsoup:

import urllib 
from BeautifulSoup import BeautifulSoup 

f = urllib.urlopen(url) 
page = f.read() 
f.close()   
soup = BeautifulSoup(page) 
for link in soup.findAll('img'): 
    print "IMAGE LINKS:", link.get('data-src')