Python网页信息爬取脚本

news2024/11/18 5:49:56

文章目录

  • 获取整个页面所有源码
  • 筛选出源码中图片地址
  • 将图片下载到本地
  • 完整脚本

获取整个页面所有源码

该步骤可以用requests模块实现,分为下面步骤:

定义一个URL 地址;

发送HTTP 请求;

处理HTTP 响应。

下面代码定义了一个get_Html方法,用requests.get()发送get请求,并用res变量接收,然后用.content返回字符串的二进制格式(操作更方便)给get_Html方法,最后调用并把数据给html,并用print输出:

.content返回字符串的二进制格式(操作更方便)

.decode(“utf8”),二进制转码成utf8格式(显示中文)

import requests

url = "http://10.9.75.164/pythonSpider/index.html"

def get_Html(url):
    res = requests.get(url = url)

    return res.content


html=get_Html(url = url)

print(html.decode("utf8"))

如下图,在命令行执行后获取到目标url的网页源码:

在这里插入图片描述

筛选出源码中图片地址

查看网页图片的地址,发现它们都是以style/u开头的URL:

在这里插入图片描述

这时候可以用正则来匹配图片地址,用正则匹配出的图片地址是一个列表,用for循环遍历输出:

\w*,匹配所有数字和字母

\.转义点,当做普通字符处理

.decode(),将获取到的源码从二进制转为字符串

import requests
import re

url = "http://10.9.75.164/pythonSpider/index.html"

def get_Html(url):
    res = requests.get(url = url)

    return res.content


html=get_Html(url = url)

img_path_list = re.findall(r"style/\w*\.jpg",html.decode())

for img_path in img_path_list:
	print(img_path)

运行结果如下,成功筛选出源码中的所有图片地址:

在这里插入图片描述

将图片下载到本地

img_save_path=“./img/1.jpg”,指定图片文件保存的目录

with open(img_save_path,“wb”) as f,以写方式(二进制)打开文件

f.write(res.content),将接收到的GTTP源码以二进制格式写入f文件

下面定义了一个img_download方法,它将url分割子串并与img_path拼接(img_path是一个图片地址),然后用requests.get方法发送get请求并用res变量接收,然后指定了一个保存图片的路径,最后用write函数将源码的二进制写入该图片中:

import requests

url = "http://10.9.75.164/pythonSpider/index.html"

img_path="style/u24020836931378817798fm170s6BA8218A7B2128178FA0A49F010080E2w.jpg"

def img_download(img_path):
    img_url=url[0:url.rfind('/')+1]+ img_path
    
    res=requests.get(url= img_url)
    
    img_save_path="./img/1.jpg"
    
    with open(img_save_path,"wb") as f:
    	f.write(res.content)
    	
img_download(img_path)

执行成功后结果如下:

在这里插入图片描述

成功爬取图片到本地:

在这里插入图片描述

完整脚本

下面是完整脚本,定义了上述的三个方法, get_html方法获取页面源码,get_img_path_list方法筛选出源码中的图片地址并组成一个列表,img_download将文件下载到本地,其中用时间戳命名每个图片文件。

这段代码调用了三个方法,前两个方法的结果给变量html和img_path_list,然后用for循环将列表遍历,每一次遍历都调用img_download方法:

html = get_html(url = url).decode()

img_path_list = get_img_path_list(html = html)

for img_path in img_path_list:
	print(img_path)
    img_download(img_path = img_path)

完整脚本:

import requests
import re
import time

url = "http://10.9.75.164/pythonSpider/index.html"

def get_html(url):
    res = requests.get(url = url)
    return res.content

def get_img_path_list(html):
    img_path_list = re.findall(r"style/\w*\.jpg", html)
    return img_path_list

def img_download(img_path):
    img_url=url[0:url.rfind('/')+1]+ img_path
    res=requests.get(url= img_url)
    img_save_path=f"./img/{time.time()}.jpg"
    with open(img_save_path,"wb") as f:
    	f.write(res.content)

html = get_html(url = url).decode()

img_path_list = get_img_path_list(html = html)

for img_path in img_path_list:
	print(img_path)
    img_download(img_path = img_path)

脚本执行成功:
在这里插入图片描述

下载图片到本地成功:

在这里插入图片描述

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

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

相关文章

jenkins中添加sonnarqube与OWASP Dependency-Check

jenkins jenkins离线插件地址: http://updates.jenkins-ci.org/download/plugins https://updates.jenkins.io/download/plugins https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins 国内linux 安装jdk11 文档: https://blog.51cto.co…

流量狂飙!暴涨2000万播放成B站创作标杆

“民以食为天”,美食品类内容是人们日常生活所需延伸出来的一个内容版块,用户浏览量大、众多内容创作者并驱争先,一直到今天,所有人有目共睹美食内容是如何在“内卷”。 饶是如此赛道拥挤的美食圈,也有众多创作者不断…

java字符串压缩和字符串解压

java字符串压缩和字符串解压 运行效果 java工具类 CompressUtil.java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import org.apache.commons.codec.binary.Base64;import java.io.BufferedReader; import java.io.Byte…

【LeetCode-中等题】116. 填充每个节点的下一个右侧节点指针

文章目录 题目方法一:直接让每层不是最后一个的节点指向此时队首元素方法二:用list记录下每层的节点 然后再做链接 题目 方法一:直接让每层不是最后一个的节点指向此时队首元素 class Solution {public Node connect(Node root) {if(root nu…

健身完全手册

文章目录 饮食完全手册摄入总量日内分配来源和配餐方法专题&错误 训练完全手册训练分化动作模式胸背手肩腿臀腹训练计划 减脂完全手册胸肌训练(原理动作计划饮食)健身训练的分化、动作、配重体态大师 饮食完全手册 参考视频:&#x1f4a…

什么是Web浏览器的缓存机制?如何控制和清除浏览器缓存?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Web浏览器的缓存机制⭐ 浏览器缓存的工作原理⭐ 控制和清除浏览器缓存控制缓存 ⭐ 清除缓存⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦&#xf…

YashanDB混合存储揭秘:行式存储如何为高效TP业务保驾护航(上)

上一篇文章《深度干货 | 揭秘YashanDB融合存储引擎》 https://mp.weixin.qq.com/s/yipJcEAH3fVA-_hnUvOiKA从存储结构、事务引擎、高可用等方面介绍了YashanDB存储引擎的整体架构。本篇为大家详细解读YashanDB行式存储技术。 背景 数据库底层组织数据的方式主要分为行式存储和…

成集云 | 金蝶云星空集成聚水潭ERP(金蝶云星空主管库存)| 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件(中国)有限公司研发的新一代战略性企业管理软件,致力于为企业提供端到端的供应链整体解决方案,它可以帮助企业构建敏捷供应链体系,降低供应链成本,提…

The existence and uniqueness of weak solution

See https://zhuanlan.zhihu.com/p/67522044 https://math.stackexchange.com/questions/1213260/what-is-a-good-definition-of-a-weak-solution

「聊设计模式」之模板方法模式(Template Method)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 在软件开发中,设计模式是经典的解决方案&#…

广州某机械制造企业生产工序管理系统解决方案

RFID工序管理解决方案在生产工序中引入RFID技术,对生产工序的构件拼装、焊接、打磨后检测、打砂油漆后检测、构件拟装读取确认、项目管理人员收货确认等各个生产环节的数据进行自动化的数据采集,保证生产管理各个作业环节数据输入的效率和准确性&#xf…

如何防止数据库泄露,保障个人信息安全题

在数字化时代,个人信息安全和数据库安全至关重要。为了防止数据库泄露,保障个人信息安全,以下安策带来的一些建议: 1.强化密码管理 密码是保护个人信息安全的第一道防线。确保使用复杂且独特的密码,避免使用容易猜测或…

二分与前缀和

目录 🍈前言 ❤二分 🌹二分 🌼数的范围 🌼数的三次方根 🌼特殊数字 🌼机器人跳跃问题 🌼四平方和 🌼分巧克力 🌹前缀和 🌼前缀和 🌼子…

html form表单高级用法

场景&#xff1a;想单纯使用表单内置的api完成提交&#xff0c;不使用js代码 代码如下&#xff1a; <form name"myForm" action"http://localhost:13734/form" method"post"><label>用户名<input type"text" name&qu…

SecureCRT SSH与FTP连接中文乱码

1、首先要保证服务端环境变量是UTF-8编码的 LANG”zh_CN.UTF-8″ 2、会话里面配置好字符编码&#xff1a;UTF-8 SSH会话的窗口就可以正常显示中文了&#xff0c;效果如下 3、打开FTP或者SFTP时进行文件传输时&#xff0c;列表窗口里面还是乱码&#xff0c;需要把SecureCRT安…

BENTLY 350015 127610-01数字量输入模块

数字输入功能&#xff1a; BENTLY 350015 127610-01模块通常用于监测和采集数字输入信号&#xff0c;例如开关状态、传感器状态等。 多通道&#xff1a; 这些模块通常具有多个输入通道&#xff0c;允许同时监测多个数字输入信号。 高精度&#xff1a; BENTLY 350015 127610-0…

四维轻云平台倾斜模型三种加载方式及单体化操作介绍

为了优化倾斜模型浏览效果&#xff0c;「四维轻云」v1.4.1针对倾斜模型新增了三种加载方式&#xff1b;此外&#xff0c;平台还增加了单体化等功能。但很多用户还不会使用这些功能&#xff0c;小编就来向大家介绍一些如何设置倾斜模型的三种加载方式和单体化操作。 一、倾斜模…

爬虫技术对携程网旅游景点和酒店信息的数据挖掘和分析应用

导语 爬虫技术是一种通过网络爬取目标网站的数据并进行分析的技术&#xff0c;它可以用于各种领域&#xff0c;如电子商务、社交媒体、新闻、教育等。本文将介绍如何使用爬虫技术对携程网旅游景点和酒店信息进行数据挖掘和分析&#xff0c;以及如何利用Selenium库和代理IP技术…

如何连接到远程桌面

远程桌面连接是一个非常有用的工具&#xff0c;尤其是当越来越多的人在家工作或使用自己的设备工作时。使用远程桌面连接软件&#xff0c;管理员即使不在您的设备附近&#xff0c;也可以解决问题&#xff0c;他们可以远程访问它并快速解决可能出现的任何问题。 什么是远程桌面…

初探微前端

微前端 一、微前端的背景和概述1.1 概念1.2 特点1.3 背景 二、微前端的实现方式2.1 服务端集成2.2 运行时集成 三、现有的解决方案3.1 single-spa3.2 qiankun3.3 micro-app 四、总结 &#x1f680;&#x1f680;&#x1f680;   随着互联网技术的不断发展&#xff0c;前端应用…