# -*- 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的方法。