如果像这样的代码,我如何才能获得图像:
<div class="galery-images">
<div class="galery-images-slide" style="width: 760px;">
<div class="galery-item galery-item-selected" style="background-image: url(/images/photo/1/20130206/30323/136666697057736800.jpg);"></div>
我想得到136666697057736800.jpg 我写道:
images = soup.select("div.galery-item")
我得到一份清单:
[<div class="galery-item galery-item-selected" style="background-image: url(/images/photo/1/20130206/30323/136666697057736800.jpg);"></div>,
<div class="galery-item" style="background-image: url(/images/photo/1/20130206/30323/136013892671126300.jpg);" ></div>,
<div class="galery-item" style="background-image: url(/images/photo/1/20130206/30323/136666699218876700.jpg);"></div>]
我不明白:我怎么能得到所有图像?
答案 0 :(得分:0)
Use regex or a css parser to extract the url,将主机连接到URL的开头,最后下载这样的图像。
import urllib
urllib.urlretrieve("https://www.google.com/images/srpr/logo11w.png", "google.png")
答案 1 :(得分:0)
为了让您的生活更轻松,您应该使用正则表达式:
urls = []
for ele in soup.find_all('div', attrs={'class':'galery-images-slide'}):
pattern = re.compile('.*background-image:\s*url\((.*)\);')
match = pattern.match(ele.div['style'])
if match:
urls.append(match.group(1))
这可以通过查找属于父div的所有divs
(具有类:'galery-images-slide')来实现。然后,您可以使用正则表达式解析子divs
以查找包含样式(其本身包含background-url)的任何内容。
因此,从上面的示例中,这将输出:
[u'/images/photo/1/20130206/30323/136666697057736800.jpg']
现在,要下载指定的图片,请在网址前附加网站名称,然后您就可以下载了。
注:
除了re
之外,这需要Python中的正则表达式模块(BeautifulSoup
)。
而且,我使用的正则表达式非常天真。但是,您可以根据需要调整此值。