爬虫爬取图片时爬取的不完整的相关问题

我想要爬取lol官网的一些特定图片,不管是英雄图标还是活动图标:

图片说明

图片说明

由于电脑截图出了点问题,所以只能手机拍照,不好意思。

可以看到这个网页里面有很多这种图片,而且sec都是有类似的格式,以//ossweb-img.qq.com开头

我想爬取这些图片

我的代码:

import os
from urllib.request import urlopen
from urllib.request import urlretrieve
from bs4 import BeautifulSoup
import re

baseURL="http://lol.qq.com/main.shtml?ADTAG=lolweb.v3.index"

html=urlopen("https://lol.qq.com/main.shtml?ADTAG=lolweb.v3.index")

bsobj=BeautifulSoup(html,"lxml")

downloadlist=bsobj.findAll(src=re.compile(".*ossweb-img.qq.com.*png"))

print(downloadlist)
a=1
def cbk(a,b,c):        下载进度函数
    per=100.0*a*b/c
    if per>=100:
        per=100
    print ('%.2f'%per)

for download in downloadlist:
    fileURL=download['src']
    if fileURL is not None:
        fileURL="http:"+fileURL
        print(fileURL)
        urlretrieve(fileURL,"download"+str(a)+".png",cbk) 
        a=a+1

但是它只下载了该网页第一个div容器里的图片,其他的都没下载,这时为什么

1个回答

图片说明
我运行了出来了一些,但是还是没有出来完全,主要是你这个写的我感觉有点摸不着头脑^_^,我发现的一个问题就是你的匹配过程中没有匹配完全,因为你的网站中的图的类型有三种:png,jpg和gif,**(downloadlist=bsobj.findAll(src=re.compile('.*ossweb-img.qq.com/.*(png|jpg|gif)'**))
)我建议你用一个框架,这样写起来会很容易,scrapy框架,对于初学者也很容易,给你推荐一篇博文:https://blog.csdn.net/HuaCode/article/details/79094541

weixin_43378698
永不秃头的ssf 回复HuaCode: okok,非常感谢
11 个月之前 回复
weixin_43378698
永不秃头的ssf 回复HuaCode原来如此,我还没学到那里
11 个月之前 回复
HuaCode
HuaCode 回复: 你可以好好看一下网页源码,你就知道为什么了
11 个月之前 回复
HuaCode
HuaCode 回复: 我自己重新写了一个,但是也只能得出三个:英雄联盟、玩家头像和段位三个,最后我仔细看了一下网页源码才知道问题的根源所在,因为除开那三个图片,其他图片都是通过js的形式动态加载的(<img src="//ossweb-img.qq.com/images/lol/img/champion/{{$index}}.png" alt="{{data[$index].title}}")这种形式,所以你直接在原网页中进行爬取当然得不到其他图片了
11 个月之前 回复
HuaCode
HuaCode 回复: bsobj=BeautifulSoup(html,"lxml")这一句你理解的是什么意思呢?功能是干什么呢?
11 个月之前 回复
HuaCode
HuaCode 回复: 其实我们从downloadlist的输出结果中可以看出,你的问题是你通过正则匹配匹配到的就是第一个图片的链接,然后就直接结束了,所以出问题应该就在bsobj=BeautifulSoup(html,"lxml") downloadlist=bsobj.findAll(src=re.compile(".*ossweb-img.qq.com.*png"))这两句上,你可以再仔细研究下怎么获取一个网站下的所有具有相同属性的链接
11 个月之前 回复
HuaCode
HuaCode 回复: 哦哦,这样的,那是我理解错了,不好意思。
11 个月之前 回复
weixin_43378698
永不秃头的ssf 奥,我只是想匹配png类型的,因为英雄列表的都是png,最主要的问题就是没有出来完全
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问