使用requeste模块爬取某网站图片

本文以交流学习为目的 侵删

  • 要使用requests模块需要先安装requests模块
    window系统下win+r输入cmd调出命令框
    在这里插入图片描述
  • 输入pip install requests

在这里插入图片描述
怎么安装pip移步别的教程吧,我就不说了,抱歉

  • 安装成功后就可以开始我们的代码了
import requests
import re


class ItubaSpider(object):
	def __init__(self, url):
		# 请求头
		self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}
		# 请求的网址
		self.url = url

re正则模块 用于匹配我们需要的图片数据
class定义了一个ItubaSpider的类
__init__方法给这个类添加属性,一个是我们的header头部,用于伪装自己作为浏览器,一个是url属性用于接受我们要爬取的网址

	def  requests(self):
		"""请求目标网址并返回"""
		response = requests.get(self.url, headers=self.headers)
		return response

定义了一个requests请求的方法,并且将这个请求返回到这方法

	def re(self):
		"""使用正则来匹配网站数据,返回图片数据网址"""
		response = self.requests()  #调用requests方法将其返回值传给response
		req = "http://222.186.12.239:20011/"  # 这是对网站分析得来的,用于拼接图片网址
		try:
			ret = re.findall(r'<img\salt=".*?"\ssrc="\/\/.*?\/(.*?)"\s\/>', response.text)  # uploads/2020/0509/20200509025821859.jpg
			# 字符串拼接获取图片数据网址
			req += ret[0]  # http://222.186.12.239:20011/uploads/2020/0509/20200509025821859.jpg
			# print(req)
		except Exception as r:
			return "下载结束"
		else:
			return req  # 返回匹配到图片网址

定义一个re方法用于对于网站数据的匹配
代码中response.text是请求到的网页源代码,用正则匹配下所需要的数据
每个网站的匹配是不一样的这里就不详细介绍了

	def download_img(self, img_url):
		"""下载图片"""
		response = requests.get(img_url, headers=self.headers)  # 请求图片数据网址
		file_name = img_url.split("/")[-1]  # 字符串切割来获取图片名称 20200509025821859.jpg
		with open(file_name, "wb") as f:
			f.write(response.content)  # 将数据写入到本地
		# print("下载成功")

	def run(self):
		"""执行下载操作"""
		img_url = self.re()  # 获取图片数据网址
		self.download_img(img_url)  #调用download_img方法下载图片

这里定义了两个方法一起讲:调用run方法执行

  • 第一行调用了刚刚的re方法获取需要下载的图片链接
  • 第二行将下载链接传入download_img方法中下载
  • download_img方法中请求了图片网址,对刚刚传入的网址按/进行分割,取最后一项当作图片的名字,将其传到file_name
  • with open(file_name, "wb") as f: 第一个file_name是写入的文件名称,第二个"wb"是以二进制写入文件
  • f.write(response.content)开始写入数据 response.content是写入的内容
def main():
	"""创建一个ItubaSpider对象调用它的run方法执行"""
	url = input("请输入要下载的网址:")
	img = ItubaSpider(url)  # 创建爬虫对象,传入我们需要下载的网址
	img.run()  # 调用爬虫对象的run方法


if __name__ == "__main__":
	main()  #启用main函数

# 网址:http://www.ituba.cc/stars/68522.html
  • 最后创建一个主函数,主函数中输入网址,实例化我们的爬虫对象,调用对象的run方法执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值