Python爬虫实战:使用requests和BeautifulSoup库批量下载高清壁纸
import requests
from bs4 import BeautifulSoup
import os
def download(url):
res = requests.get(url)
img_data = res.content
filename = os.path.join('img1', url.split('/')[-1])
if not os.path.exists(filename):
with open(filename, 'wb') as f:
f.write(img_data)
def get_html():
for i in range(3, 20): # 获取第2到19页的图片
# 构建页面URL
url = f'http://www.netbian.com/index_{i}.htm'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
# 发送请求获取页面内容
res = requests.get(url, headers=headers)
res.encoding = 'gbk' # 设置编码方式
# 检查请求是否成功
if res.status_code == 200:
html = res.text
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html, 'lxml')
all_list = soup.find(class_='list')
all_imgs = all_list.find_all('img')
# 创建图片保存目录
if not os.path.exists('img1'):
os.makedirs('img1')
# 下载图片
for img in all_imgs:
src = img['src']
download(src)
if __name__ == '__main__':
get_html()
代码解释:
-
导入必要的库:
requests
: 用于发送HTTP请求获取网页内容。BeautifulSoup
: 用于解析HTML网页,提取所需信息。os
: 用于创建文件夹和处理文件路径。
-
download(url)
函数:- 接收图片URL作为参数。
- 使用
requests.get()
方法发送GET请求获取图片数据。 - 使用
os.path.join()
构建图片保存路径,并使用os.path.exists()
检查文件是否存在,避免重复下载。 - 使用
open(filename, 'wb')
以二进制写入模式打开文件,将图片数据写入文件。
-
get_html()
函数:- 使用循环遍历目标网页的页码范围。
- 构建目标网页的URL,并设置请求头信息,模拟浏览器访问。
- 使用
requests.get()
发送GET请求获取网页HTML内容。 - 使用
res.encoding = 'gbk'
设置编码方式,确保正确解析中文内容。 - 使用
BeautifulSoup(html, 'lxml')
将HTML内容解析为BeautifulSoup对象。 - 使用
soup.find()
和soup.find_all()
方法查找包含图片链接的HTML元素,提取图片URL。 - 循环遍历所有图片URL,调用
download()
函数下载图片。
修改代码并保持功能不变的例子:
- 可以修改图片保存的文件夹名称,例如将
'img1'
改为'wallpapers'
。 - 可以修改请求头信息,例如使用不同的User-Agent字符串。
- 可以添加一些打印语句,用于在控制台输出程序运行进度或调试信息。
请注意,爬取网站信息需要遵守网站的robots.txt协议和相关法律法规。

原文地址: http://www.cveoy.top/t/topic/fR7x 著作权归作者所有。请勿转载和采集!