本文以交流学习为目的 侵删
- 要使用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
方法执行