python脚本-网页爬虫获取网页图片

python脚本-网页爬虫获取网页图片

代码

import requests
import re
import time
url="http://10.9.47.154/python-spider/"
# 爬取网站的url
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36"
}
# 设置请求头
def gethtml(url):
    res=requests.get(url=url,headers=headers)
    return res.content
# 该函数获取目标网站的源码(二进制)

def getimgpath(html):
    imgpath=re.findall(r"style/\w*\.jpg",html)
    return imgpath
# 该函数获取网页中图片路径,并形成列表

def download(img_save_path,img_url):
    with open(img_save_path,"wb") as f:
        f.write(gethtml(url=img_url))
# 该函数为下载图片,第一个参数为保存的路径,第二个为下载图片的完整路径

html=gethtml(url).decode()
path1=getimgpath(html=html)
# 此处html为获取网页的二进制源码并decode转码,path1为图片路径列表

for i in path1:
    # i 为path1列表中的每一个元素
    img_url=url + i
    # 拼接完整的图片路径
    img_save_path=f"./img/{time.time()}.jpg"
    # 时间戳命名,总体为拼接保存的路径
    download(img_save_path=img_save_path,img_url=img_url)
    # 执行下载函数,传参

效果

python脚本-网页爬虫获取网页图片_第1张图片

python脚本-网页爬虫获取网页图片_第2张图片

相关模块参数

模块中的请求方法

请求方法 说明
requests.get() GET 方法
requests.post()
requests.head() 只返回响应头部,没有响应正文。
requests.options()
requests.put()
requests.delete()

请求方法中的参数

参数名字 参数含义
url 请求URL 地址
headers 自定义请求头部
params 发送GET 参数
data 发送POST 参数
timeout 请求延时
files 文件上传数据流

响应对象中属性

方法名 解释
response.text 响应正文(文本方式)
response.content 响应正文(二进制)
response.status_code 响应状态码
response.url 发送请求的URL 地址
response.headers 响应头部
response.request.headers 请求头部
response.cookies cookie 相关信息

re 模块

从网页内容中提取图片地址。

正则表达式(RE),是一些由字符和特殊符号组成的字符串,它们能按某种模式匹配一系列有相似特征的字符串。

  • 从哪一个字符串中搜索什么内容;
  • 规则是什么(模式问题)。

匹配单个字符

记号 说明
. 匹配任意单个字符(换行符除外). 表示真正的.
[…x-y…] 匹配字符集合里的任意单个字符
[^…x-y…] 匹配不在字符组里的任意单个字符
\d 匹配任意数字,与[0-9] 同义
\w 匹配任意数字、字母、下划线,与[0-9a-zA-Z_] 同义
\s 匹配空白字符,与[\r\v\f\t\n] 同义

匹配一组字符

记号 说明
字符串 匹配字符串值
字符串1|字符串2 匹配字符串1或字符串2
* 左邻第一个字符出现0 次或无穷次
+ 左邻第一个字符最少出现1 次或无穷次
? 左邻第一个字符出现0 次或1 次
{m,n} 左邻第一个字符出现最少m 次最多n 次

其他元字符

记号 说明
^ 匹配字符串的开始 集合取反
$ 匹配字符串的结尾
\b 匹配单词的边界,单词包括\w 中的内容
() 对字符串分组
\数字 匹配已保存的子组

核心函数

核心函数 说明
re.findall() 在字符串中查找正则表达式的所有(非覆盖)出现;返回一个匹配对象的列表。
re.match() 尝试用正则表达式模式从字符串的开头匹配 如果匹配成功,则返回一个匹配对象 否则返回None
re.search() 在字符串中查找正则表达式模式的第一次出现 如果匹配成,则返回一个匹配对象 否则返回None
re.group() 使用match 或者search 匹配成功后,返回的匹配对象 可以通过group() 方法获取得匹配内容
re.finditer() 和findall() 函数有相同的功能,但返回的不是列表而是迭代器 对于每个匹配,该迭代器返回一个匹配对象
re.split() 根据正则表达式中的分隔符把字符分割为一个列表,并返回成功匹配的列表字符串也有类似的方法,但是正则表达式更加灵活
re.sub() 把字符串中所有匹配正则表达式的地方换成新的字符串
re.split() 根据正则表达式中的分隔符把字符分割为一个列表,并返回成功匹配的列表字符串也有类似的方法,但是正则表达式更加灵活
re.sub() 把字符串中所有匹配正则表达式的地方换成新的字符串

你可能感兴趣的:(python,爬虫,开发语言,网络安全,安全,web安全)