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

news2024/11/22 11:08:40

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.coloradmin.cn/o/1162275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云双11特惠:云服务器1年99元,新老同享,续费同价!

2023年双11阿里云推出了金秋云创季活动,云服务器特惠,2核2G云服务器1年99元,新老同享,续费同价! 活动地址: https://txy.ink/aliyun/ 活动详情: 阿里云面向个人开发者、学生、小微企业推出爆…

电压跟随器输入脚悬空引起的振荡

昨天在调试一个电路板的时候,发现进单片机AD脚的信号上面有个50Hz的波形,峰峰值还挺大,有几百毫伏。这种情况只有在输入端悬空的时候才出现;在输入端接了信号或者传感器的时候,就又正常了。 经过排查,发现…

92 数据流中的中位数

数据流中的中位数 题解1 小根堆大根堆另一种写法 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFi…

使用Java与Jsoup库构建有趣的爬虫项目

目录 一、网络爬虫的概念和应用 二、Jsoup库的功能和优势 三、使用Java与Jsoup库编写网络爬虫 四、网络爬虫的法律和道德问题 五、注意事项 六、总结 本文将深入探讨如何使用Java与Jsoup库构建一个实际且有趣的网络爬虫项目。我们将首先简要介绍网络爬虫的概念和应用&…

运动耳机哪个好?跑步耳机哪个好?运动耳机排行榜推荐

​运动时没有音乐的相伴真的很枯燥,当你打开音乐,世界就只剩下你和你的运动。运动的同时听歌还能让你完全沉浸在音乐中,享受运动的乐趣。无论是在激烈的比赛中,还是在轻松的晨跑中,它都能为你提供最佳的听觉体验。然而…

银河麒麟x86版、银河麒麟arm版操作系统编译zlmediakit

脚本 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64mkdir -p /home/zenglg cd /home/zenglg git clone --depth 1 https://gitee.com/xia-chu…

【23-24 秋学期】NNDL 作业6 卷积

卷积常用于特征提取 实验过程中注意认真体会“特征提取”,弄清楚为什么卷积能够提取特征。 一、概念 用自己的语言描述“卷积、卷积核、特征图、特征选择、步长、填充、感受野”。 二、探究不同卷积核的作用 卷积神经网络工作原理的直观理解_superdont的博客-CS…

DCN无线网络解决方案

一、概述 网络环境建设项目的目标是要建设一套安全可靠、性能领先的无线网络系统,能够良好支撑协同工作平台。经过几年的建设,网络建设已经由大规模建设阶段逐步转入“建设与服务并重,着力深化应用”的新阶段。在此阶段,网络工作…

基于Apache SeaTunnel 的数据精确一致性技术实践

引言 在分布式系统中,保障数据一致性是至关重要的任务之一。数据一致性是指分布式系统中的各个节点在进行数据更新时能够保持数据的准确性和完整性。然而,由于网络延迟、节点故障等原因,分布式系统中的数据一致性问题变得复杂而具有挑战性。…

行业揭秘:腾讯共享wifi码推广零加盟费是真的吗?

近年来,“共享经济”概念在商业领域取得了巨大成功。共享WiFi贴码成为共享经济的一种典型案例,被越来越多的人看作是一种低风险、高回报的投资方式。而在这个市场中,腾讯WiFi码推广以“零加盟费”而备受关注。本文将探讨腾讯WiFi码推广零加盟…

中国商界杂志中国商界杂志社中国商界编辑部2023年第10期目录查询

要闻 我国旅游市场步入理性繁荣阶段 赵熠如; 10-11 产业 老国货品牌再迎高光时刻 能否留住流量 涂瀚文; 12-13《中国商界》投稿:cnqikantg126.com 金融集聚有力 促进长三角城市高质量发展 刘盛坤; 14-17 辽宁农贸市场亟待优化升级路径在哪儿&#x…

SpringMVC Day 11 : 零 xml 配置

前言 欢迎来到《Spring MVC Day 11: 零XML配置》!在之前的学习中,我们已经掌握了如何使用Spring MVC框架构建灵活、高效的Web应用程序。然而,我们可能还记得那些繁琐的XML配置文件,它们是我们在过去几天中使用的方式。 好消息是…

数据库概念和sql语句+库表管理操作+数据库用户管理

一、数据库的概念: 进入数据库的奇妙世界:mysql -u root -p123456 数据库是一个系统,是一个人机系统。由硬件、OS操作系统、数据库、DBMS和数据库的 用户共同组成。 用户时通过DBMS(各种数据库的软件)来对数据库进行…

京东数据平台:2023年9月京东智能家居行业数据分析

鲸参谋监测的京东平台9月份智能家居市场销售数据已出炉! 9月份,智能家居市场销售额有小幅上涨。根据鲸参谋电商数据分析平台的相关数据显示,今年9月,京东平台智能家居的销量为37万,销售额将近8300万,同比增…

I.MX6U设置I2C复用和电气特性函数IOMUXC_SetPinMux和IOMUXC_SetPinConfig解析

1. 在【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 第627页中有提到bsp_ap3216c.c中IO初始化,配置 I2C IO属性函数如下: unsigned char ap3216c_init(void) { IOMUXC_SetPinMux(IOMUXC_UART4_TX_DATA_I2C1_SCL, 1); IOMUXC_SetPinMux(IOMUXC_UART4_…

找工作时如何快速了解一家公司?看他们招聘就知道

每一位求职者,都希望自己能够对感兴趣或者符合自己期望条件的公司有一个全面而深入的了解。如何在找工作或者找实习的时候,快速地了解一家公司,那就看看他们的招聘吧! 1、从招聘信息洞察公司格局 有些公司的招聘信息中&#xf…

java 网上点餐系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 网上点餐系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0&#…

2行代码将你的本地服务暴露在公网!

内网穿透 作为一个开发者,内网穿透的概念你一定听过。 内网穿透(Intranet Penetration)是指借助一定的技术手段,将处于私有网络(内网)中的主机或服务器暴露给外部网络(公网)用户&a…

【好玩的开源项目】Docker下部署HomeAssistant智能家居系统

【好玩的开源项目】Docker下部署HomeAssistant智能家居系统 一、HomeAssistant介绍1.1 HomeAssistant简介1.2 HomeAssistant特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、…

分享一下怎么做小程序营销活动

小程序营销活动已经成为现代营销的必备利器,它能够帮助企业提高品牌知名度、促进产品销售,以及加强与用户的互动。然而,要想成功地策划和执行一个小程序营销活动,需要精心设计和全面规划。本文将为您介绍小程序营销活动的策划和执…