当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 177877提问 提问时间:2023-11-05 03:10:51阅读次数: 77

最佳答案 问答题库778位专家为你答疑解惑

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)# 执行下载函数,传参

效果

image-20231102114143056

image-20231102114225871

相关模块参数

模块中的请求方法

请求方法说明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.cookiescookie 相关信息

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

99%的人还看了

猜你感兴趣

版权申明

本文"python脚本-网页爬虫获取网页图片":http://eshow365.cn/6-32348-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!