2012-03-22 44 views
2

這是我的代碼來獲得一個網頁的圖片的網址Python來解析器網頁的圖片網址

對於一些網頁,它工作得很好,而這對於一些網頁

這麼想的工作這是我的代碼: #在/ usr/bin中/ Python的

import urllib2 
import re 
#bufOne = urllib2.urlopen(r"http://vgirl.weibo.com/5show/user.php?fid=17262", timeout=4).read() 
bufTwo = urllib2.urlopen(r"http://541626.com/pages/38307", timeout=4).read() 

jpgRule = re.findall(r'http://[\w/]*?jpg', bufOne, re.IGNORECASE) 
jpgRule = re.findall(r'http://[\w/]*?jpg', bufTwo, re.IGNORECASE) 
print jpgRule 

bufOne工作做好,但bufTwo沒有工作。那麼如何爲它寫一把尺子讓bufTwo工作得很好?

+0

啊,好老的色情 - 得到... – 2012-03-22 10:09:40

回答

8

Don't use regex to parse HTML。而是使用Beautiful Soup來查找所有img標記,然後獲取src屬性。

from BeautifullSoup import BeautifullSoup 

#... 

soup = BeautifulSoup(bufTwo) 
imgTags = soup.findAll('img') 
img = [tag['src'] for tag in imgTags] 
+0

認爲,但如何理解'[標籤['src']爲標籤在imgTags]' – thlgood 2012-03-22 13:31:43

+1

它的列表理解。 'imgTags'是'Tag'對象的列表(更多信息請看BeautifullSoup文檔)。列表理解產生一個包含所有'src'屬性值的新列表。這只是執行'img = [];的一種快速方式;對於imgTags中的標籤:img.appent(tag ['src'])'。 – ddk 2012-03-22 13:41:48

0

我會藉此機會ddk給你一個更容易獲取所有圖像的方法。 使用美麗的湯那樣:

from BeautifulSoup import BeautifulSoup 
all_imgs = soup.findAll("img", { "src" : re.compile(r'http://[\w/]*?jpg') }) 

這會已經給你你想要的所有圖像的列表。