先上代码再做讲解
# 编写程序实现快速下载照片并保存到相应的目录
# 针对的网站主要是百度的图片
# -*- coding:utf8 -*-
import os
import re
from urllib import parse
import requests
class BaiduImageSpider:
def __init__(self):
self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&word={}'
self.headers = {'User-Agent': 'Mozilla/4.0'}
def get_image(self, url, word):
# 使用requests获取响应对象
res = requests.get(url, headers=self.headers)
# 改变编码格式
res.encoding = 'utf-8'
# 获取网页
html = res.text
print(html)
# 正则解析
pattern = re.compile('"hoverURL":"(.*?)"', re.S)
img_link_list = pattern.findall(html)
# 保存图片链接
print(img_link_list)
# 创建对应目录保存图片
directory = 'D:/Python/Py_Scrapy/chap_2/image/{}/'.format(word)
# 如果目录不在则创建
if not os.path.exists(directory):
os.makedirs(directory)
# 计数添加
i = 1
for img_link in img_link_list:
filename = '{}{}_{}.jpg'.format(directory, word, i)
self.save_image(img_link, filename)
i += 1
# 保存函数
def save_image(self, img_link, filename):
html = requests.get(url=img_link, headers=self.headers).content
with open(filename, 'wb') as f:
f.write(html)
print('下载成功')
def run(self):
word = input('您想要谁的照片')
word_parse = parse.quote(word)
url = self.url.format(word_parse)
self.get_image(url, word)
if __name__ == '__main__':
spider = BaiduImageSpider()
spider.run()
本次所写的程序主要是基于爬虫实现对网页照片的抓取 这里主要针对的网址是百度图片
基本步骤主要有
初始化相关信息
def __init__(self):
self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&word={}'
self.headers = {'User-Agent': 'Mozilla/4.0'}
发起网络响应 获取网页基本信息
解析网页 获取图片链接
这里将发起网络请求和解析网页获取图片链接都写在了get_html方法当中
def get_image(self, url, word):
# 使用requests获取响应对象
res = requests.get(url, headers=self.headers)
# 改变编码格式
res.encoding = 'utf-8'
# 获取网页
html = res.text
print(html)
# 正则解析
pattern = re.compile('"hoverURL":"(.*?)"', re.S)
img_link_list = pattern.findall(html)
# 保存图片链接
print(img_link_list)
# 创建对应目录保存图片
directory = 'D:/Python/Py_Scrapy/chap_2/image/{}/'.format(word)
# 如果目录不在则创建
if not os.path.exists(directory):
os.makedirs(directory)
# 计数添加
i = 1
for img_link in img_link_list:
filename = '{}{}_{}.jpg'.format(directory, word, i)
self.save_image(img_link, filename)
i += 1
列表保存相关的图片链接 在通过format方法拼凑成图片文件
在对网页解析处理后 又单独书写了一个保存方法 来完成对图片的保存
# 保存函数
def save_image(self, img_link, filename):
html = requests.get(url=img_link, headers=self.headers).content
with open(filename, 'wb') as f:
f.write(html)
print('下载成功')
注意:这里的图片文件的保存是二进制格式保存的
以上就是相关的函数处理过程 最后整合处理运行即可
该程序演示了如何使用Python爬虫从百度图片搜索中抓取并下载指定关键词的图片。首先初始化URL和请求头,然后通过requests库获取网页内容。正则表达式用于解析图片链接,接着创建目录保存图片,最后用save_image方法以二进制格式保存图片。
3万+

被折叠的 条评论
为什么被折叠?



