今天呢,大邓给大家写个爬图片的爬虫,毕竟之前写了验证码的爬虫,关于图片保存已经涉及了,那么咱们就来个图片爬虫吧。
毕竟网上的数据除了文本,还有图片这一大类。凭啥装作看不见呢!!今天大邓就突破自己之前的界限,爬爬图片,有益身心。O(∩_∩)O
视频教程在文章最末尾!!!
网站:http://desk.zol.com.cn/
我们直接打开美女标签的网址,打开如下
写爬虫前,我们一定要清楚思路,不然写起来会很混乱,写的很纠结。今天我就没构思思路,觉得很easy,就随便写吧。结果写的很乱,功能实现了,但是工作量大了好多。后来录制视频时,才按照思路展开,省时又省力。
思路梳理
一、分析网站url结构
1、分析主页的网址url规律
2、 获得主页中不同详情页的url
使用BeautifulSoup和re库获取到详情页的url
3、打开图片集,获得壁纸大图的url
使用re正则匹配出壁纸大图的url
二、壁纸的下载与保存
开始实战
1、分析主页的url,这个比较简单,我们填充tag和page的值就可以构造主页面url
base_url = 'http://desk.zol.com.cn/{tag}/{page}.html'
2、获得主页中不同图片集的url
使用BeautifulSoup和re库获取到图片集的url
如上图,我们先用Beautifulsoup库将图片集定位出来。我们只需找到能代表这类图片集的一个标签找到即可,推广开就找到整个主页面所有的详情页url
url = base_url.format(tag='chemo', page=i)
resp = requests.get(url)
#防止中文部分出现乱码,详情可看视频
resp.encoding = 'gb2312'
bsObj = BeautifulSoup(resp.text, 'lxml')
PicUrlList = bsObj.find_all('li', {'class':'photo-list-padding'})
找到这类标签(返回的是列表)后,我们在遍历列表中的元素,对每个元素进行正则匹配,匹配出详情页url(href是url的一部分,后面要进行拼接才能成为完整的url)
href_pattern = re.compile(r'href="(.*?)"')
name_pattern = re.compile(r'title="(.*?)" width="208px"')
for Pic in PicUrlList:
String = str(Pic)
page_url = re.findall(href_pattern, String)[0]
name = re.findall(name_pattern, String)[0]
info = (page_url,name)
3、打开图片集,获得壁纸大图的url
使用re正则匹配出壁纸大图的url
b_url = 'http://desk.zol.com.cn'
url = b_url + picurl
resp = requests.get(url).text
img_src_pattern = re.compile(r'nowPicSrc : "(.*?)"')
img_src = re.findall(img_src_pattern, resp)[0]
img = requests.get(img_src).content
4、下载保存图片
path = os.getcwd() + '/车模/' + picname + '.jpg'
with open(path,'wb') as f:
f.write(img)
完整代码
更多内容
大数据
爬虫
【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”
【视频】快来get新技能--抓包+cookie,爬微博不再是梦
文本分析
神奇的python
【视频】手把手教你抓美女~
关注公众号:大邓带你玩python即可获得项目源码
网友评论