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

效果

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/182335.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊云科技大语言模型下的六大创新应用功能

目录 前言 亚马逊云科技的AI创新应用 ​编辑 Amazon CodeWhisperer Amazon CodeWhisperer产品的优势 更快地完成更多工作 自信地进行编码 增强代码安全性 使用收藏夹工具 自定义 CodeWhisperer 以获得更好的建议 如何使用Amazon CodeWhisperer 步骤 1 步骤 2 具体…

Flink源码解析八之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

【漏洞复现】IIS_7.o7.5解析漏洞

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 1.1、漏洞描述 漏洞原理: cgi.fix_path1 1.png/.php该…

WPF中依赖属性及附加属性的概念及用法

完全来源于十月的寒流,感谢大佬讲解 依赖属性 由依赖属性提供的属性功能 与字段支持的属性不同,依赖属性扩展了属性的功能。 通常,添加的功能表示或支持以下功能之一: 资源数据绑定样式动画元数据重写属性值继承WPF 设计器集成 …

【数据结构】单链表OJ题

前言: 本节博客将讲解单链表的反转,合并有序链表,寻找中间节点及约瑟夫问题 文章目录 一、反转链表二、合并有序链表三、链表的中间结点四、环形链表的约瑟夫问题 一、反转链表 要反转链表,我们需要遍历链表并改变每个节点的 next 指针&#…

大数据毕业设计选题推荐-旅游景点游客数据分析-Hadoop-Spark-Hive

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

webgoat-Insecure Deserialization不安全的序列化

A(8)不安全的反序列化 反序列化是将已序列化的数据还原回对象的过程。然而,如果反序列化是不安全的,那么恶意攻击者可以在序列化的数据中夹带恶意代码,从而在反序列化时执行这些代码。这种攻击被称为反序列化。 什么…

雨洪水资源管理远程监控平台

雨洪水资源管理远程监控平台 汛期来临时,及时获得河道水库的水位涨幅数据对开展防汛抗洪工作至关重要,大量河道水库分布在远离城市的区域,而且分散,尤其是在紧急防汛阶段,如果只依靠传统人力巡查获得河道水位数据必将耗…

API接口对于程序员可以提高开发效率、减少错误率、保证数据一致性、增强用户体验

API接口给程序员带来了许多好处。以下是其中一些主要的好处: 提高开发效率:通过API接口,程序员可以避免重复编写代码,直接使用其他应用程序或服务提供的接口和数据,从而极大地提高了开发效率。减少错误率:…

linux修改rocketmq的日志文件位置

文章目录 🔊修改rocketmq的日志文件位置📕原来的文件📌修改后文件📇rocketmq中的Rocketmq_client.log文件在配置文件中改不了 需要在代码logback文件中进行修改🖊️最后总结 🔊修改rocketmq的日志文件位置 …

数据可视化:折线图

1.初看效果 (1)效果一 (2)数据来源 2.JSON数据格式 其实JSON数据在JAVA后期的学习过程中我已经是很了解了,基本上后端服务器和前端交互数据大多是采用JSON字符串的形式 (1)JSON的作用 &#…

uniapp在APP端使用swiper进行页面不卡顿滑动

uniapp在APP端使用swiper进行页面会卡顿&#xff0c;主要是渲染的数据有点多&#xff0c;这里只渲染三个数据就不好那么卡顿了&#xff0c;每次滑动后更新数据 <view><swiper change"changePoint" circular :disable-touch"disableTouch"><…

uniapp踩坑之项目:uniapp数字键盘组件—APP端

//在components文件夹创建digitKeyboard文件夹&#xff0c;再创建digitKeyboard.vue <!-- 数字键盘 --> <template><view class"digit-keyboard"><view class"digit-keyboard_bg" tap"hide"></view><view clas…

IDEA插件分享,支持接口调试!

平时我们在写完接口需要填入postman、Apipost等工具进行接口调试&#xff0c;今天给大家推荐一款IDEA插件Apipost-helper&#xff0c;写完代码直接可以进行调试&#xff0c;而且支持生成接口文档&#xff0c;JAVA工程师必用&#xff01; 可以点击下方链接或在插件商店中搜索安…

Angular异步数据流编程

1 目前常见的异步编程的几种方法 首先给出一个异步请求的实例&#xff1a; import {Injectable} from angular/core;Injectable({providedIn: root }) export class RequestServiceService {constructor() {}getData() {setTimeout(() > {let res zhaoshuai-lcreturn res…

个人服务器到期,项目下线,新的开始

告别旧服务器 2023.11.06服务器到期&#xff0c;所有项目正式下线 时间真的过的很快&#xff0c;从开始踏入编程的大门&#xff0c;到现在不知不觉已经陆续经手了两台服务器了&#xff0c;目前这台服务器是一年前的阿里云活动白嫖的嘿嘿嘿&#xff0c;该服务器上目前运行的项…

2022年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 十六进制数100,对应的十进制数为 ?( ) A: 128 B: 256 C: 28 D: 56 答案:B 考查学生将十六进制数转为十进制数。本质上就是int(‘100’,16),答案为256。 第2题 下图代码中,…

一站式解决方案:体验亚马逊轻量服务器/VPS的顶级服务与灵活性

文章目录 一、什么是轻量级服务器/VPS 二、服务器创建步骤 三、服务器连接客户端(私钥登录) 四、使用服务器搭建博客网站 五、个人浅解及总结 一、什么是轻量级服务器/VPS 亚马逊推出的轻量级服务器/VPS&#xff1a;是一种基于云计算技术的虚拟服务器解决方案。它允许用户…

【VR开发】【Unity】【VRTK】3-VR项目设置

任何VR避不开的步骤 如何设置VR项目,无论是PC VR还是安卓VR,我在不同的系列教程中都说过了,不过作为任何一个VR开发教程都难以避免的一环,本篇作为VRTK的开发教程还是对VR项目设置交代一下。 准备好你的硬件 头盔必须是6DoF的,推荐Oculus Quest系列,Rift系列,HTC和Pi…

NLP之Bert介绍和简单示例

文章目录 1. Bert 介绍2. 代码示例2.1 代码流程 1. Bert 介绍 2. 代码示例 from transformers import AutoTokenizertokenizer AutoTokenizer.from_pretrained("bert-base-chinese") input_ids tokenizer.encode(欢迎来到Bert世界, return_tensorstf) print(input…