2016-09-06 77 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会破坏您的切片方法。 –