# -*- coding: utf-8 -*-
# 导入第三方包和模块 import requests from bs4 import BeautifulSoup import os #os是软件自带的,此处用来保存文件夹的功能
# 在本地新建一个文件夹,命名为test_img,用以保存下载的图片 folder = 'test_img' if not os.path.exists(folder): os.makedirs(folder)
# 定义一个函数,用以下载图片 def download(url): response = requests.get(url) name = url.split('/')[-1] #以/为分割符保留最后一段,这个是保存的名字,在下一条中使用,此条只是为了名字,无其他用 f = open(folder + '/' + name + '.jpg', 'wb') f.write(response.content) f.close()
header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
# 网页可以翻19次,相当于改变url,循环19次;然后对每一个页面都执行‘获取src’和‘下载图片’的操作 for i in range(1, 20): url_i = 'https://tieba.baidu.com/p/4064957036?pn=' + str(i) response_i = requests.get(url_i, headers=header) print(url_i) #打印出所有的网页
# 获取第i个页面的url、response类、html、soup,以及该页面所有图片对应的src html_i = response_i.text soup_i = BeautifulSoup(html_i, 'html.parser') imgs_i = soup_i.find_all('img', attrs={'class': 'BDE_Image'})
for img in imgs_i: img_src = img.get('src') print(img_src) download(img_src) print('OK')
本实例的技术难点在于:
1、用for循环表示这个可翻页帖子的19个url;
2、range()表示有序数组;
3、str()强制将整形转化为字符串;
4、温习BeautifulSoup模块中find_all(‘img’, {‘class’: ‘attrs’})与soup.get(‘src’),来获取所有图片的src的方法。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试