2016-09-06 76 views
0

我想從一個網址的圖片的href不使用硒得到動態內容蟒蛇

def(): 
    try: 
     page = urllib2.urlopen('') 
    except httplib.IncompleteRead, e: 
     page = e.partial    
     response = BeautifulSoup(page) 
     print response 
     var = response.find("div", {"id":"il_m"}).find('p') 

圖片,但我有沒有爲result.What我應該做的,以GE在href?

回答

0

您也可以從標籤與下載屬性的鏈接:

In [2]: from bs4 import BeautifulSoup 
In [3]: import urllib2 

In [4]: r = urllib2.urlopen('http://icecat.us/index.php/product/image_gallery?num=9010647&id=9409545&lang=us&imgrefurl=philips.com')  
In [5]: soup = BeautifulSoup(r,"html.parser") 

In [6]: print(soup.select_one("p a[download]")["href"]) 
http://images.icecat.biz/img/gallery/9010647-Philips-_FP.jpg 

你也應該採取文字圖片可能受版權保護的音符。。在頁面上。

+0

謝謝你的回答,但我得到這個錯誤'NoneType'對象沒有屬性'__getitem__' –

+0

你是如何得到源和什麼版本的bs4? –

+0

版本4.4.0和你的意思是我得到的源代碼, –

0

你不針對正確的p標籤:

  1. 首先,要從<a>節點提取href和不<p>
  2. 被發現的第一個<p>子元素這一個<p class="il_r" id="url_domain" </p>

你可以做的是針對第5 <p>元素的<a> WH ich是圖像。這樣做的一種方法是var = response.find("div", id = "il_m").find_all('p')[4].find('a')

+0

感謝您花時間寫出您的見解。我的意思是「錯誤的元素」是p元素沒有一個有用的鏈接,你需要「向下走」到a元素。我同意我的切片解決方案有點脆,而你的切片更加簡潔,你張貼在我之前,我沒有看到你的答案。 – Ultcyber

+0

感謝你的回答這兩個答覆工作 –

+0

好吧,我發佈了差不多20分鐘之前,你不完全在前。 download屬性對於頁面來說是唯一的,因此比試圖找到正確的p標記更加可靠,有多種方式,包括使用'data-filename'屬性獲取href,都比切片好得多,尤其是如果OP正在將多個頁面作爲不同的順序進行抓取,或者添加另一個p會破壞您的切片方法。 –