爬虫-图像批量下载实战

通过新东方网站下载教师头像

import requests
from bs4 import BeautifulSoup 
import os

# 通过图片网页地址,写入到本地
def get_image(url,fn):
    resp =requests.get(url)
    with open('头像\{}.png'.format(fn),'wb') as f:
        f.write(resp.content)   # 图片要要通过二进制格式写入

# 获取网页、网页解析
def loan_image(url):
    while True:
        r = requests.get(url)
        soup = BeautifulSoup(r.text)
        for jj in soup.select('dl[class="clearfix"]'):
            for dt in jj.find_all('dt'):
                img_ad = dt.img.attrs['src']
                name = dt.h3.a.string
            for dd in jj.select('p[class="ppl2 clearfix"]'):
                class_name = dd.em.string
            get_image(img_ad,name+'-'+class_name)   # 此处用到前一个函数
        if soup.find_all('a',class_='end'):         # []空列表表示False,非空表示True
            url = url+soup.find_all('a',class_='end')[0].attrs['href']
        else:
            break
           
# 通过新东方太原地区网站下载教师头像
url = 'https://laoshi.xdf.cn/21/category?part=190&p=1'
os.chdir(r'C:\Users\99452\Desktop')
loan_image(url)

- 上面代码写的过程中遇到的情况注意一下:

# 下面两段代码返回的内容不一致:
# 这个就仅仅返回dl标签中class属性为'clearfix'的标签
for jj in soup.select('dl[class="clearfix"]'):
	print(jj)  

 # 如下不仅返回dl标签中class属性为'clearfix',还返回了class属性为'clearfix sx'的等,属于多值属性,不知道用find什么方法可以解决
 for jj in soup.find_all('d1',class_="clearfix"):
 	print(jj) 

参考
1、CDA课程
2、新了解的知识点:if/while语句中的True/False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值