Python---爬虫
文章目录
-
目录
前言
一.Http请求/响应模块
requests模块
二.文本筛选模块
re模块
XPath模块
XPath 路径表达式
XPath 语法元素
三. 爬虫模板
爬虫案例
前言
Python爬虫是一种通过自动化程序爬取互联网上的信息的技术。爬虫可以自动访问网页并提取所需的数据,比如网站的文本、图片、视频等。Python是一种简单易学的编程语言,广泛用于开发爬虫程序。
一.Http请求/响应模块
requests模块
requests模块可以用于发送GET、POST、PUT、DELETE等各种类型的HTTP请求,并且可以处理URL参数、请求头、响应内容等。
常用函数:
请求函数
- 发送GET请求,并返回一个Response对象
requests.get(url)
- 发送POST请求,并返回一个Response对象
requests.post(url)
响应函数
- 获取响应的文本内容
response.text
- 以字节(bytes)形式获取响应体的内容
response.content
- 获取Http响应的状态码
response.status_code
- 获取Http响应的头部信息
response.headers
- 获取响应的JSON格式数据
response.json()
二.文本筛选模块
re模块
re模块是Python中的正则表达式模块,它提供了对字符串进行模式匹配和替换的功能。
- 返回字符串中所有与正则表达式匹配的非重叠模式的列表。
re.findall(pattern, string)
XPath模块
Python中的XPath模块是一个用于解析和操作XML文档的库。它可以通过使用XPath表达式来查找和选择XML文档中的节点,以便提取所需的数据。
html.xpath("XPath路径")
XPath 路径表达式
XPath 表达式的基本语法是从一个根元素开始,然后沿着树向下选择元素、属性或文本。表达式可以是绝对路径或相对路径。
- 绝对路径:从根元素开始的路径。例如,
/root/child表示选择根元素root下的child元素。 - 相对路径:从当前节点开始的路径。例如,
child/grandchild表示选择当前child元素下的grandchild元素。
XPath 语法元素
- 节点名称:选择具有特定名称的节点。
/:作为路径分隔符,表示从根节点或当前节点开始选择。//:选择文档中的节点,不考虑它们的位置。*:匹配任何元素节点。@:用于选择属性。[]:用于指定条件。.:表示当前节点。..:表示当前节点的父节点
演示案例:
<bookstore> <book> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book>
</bookstore>
示例 1: 选择所有 book 元素
/bookstore/book
示例 2: 选择所有 title 元素
//title
示例 3: 选择第一个 book 元素的 title
/bookstore/book[1]/title
示例 4: 选择所有 title 元素,且这些元素的 lang 属性值为 en
//title[@lang='en']
三. 爬虫模板
第一步:安装必要的库如:requests库
第二步:在爬取站点页面右键检查,查找User-Agent内容,如下图

第三步:使用
requests库向目标网页发送请求,并获取网页的HTML内容
import requests header = {"User-Agent":"..."} 填入请求报文中User-Agent内容
url = 'http://example.com'
response = requests.get(url,headers=header)
response.encoding = 'utf-8' 如果有需要,设置正确的编码
html_content = response.text 获取响应文本内容
爬虫案例
下面通过爬取站点 https://pic.netbian.com/的图片做一个演示。
- 第一步:发送Http请求访问需要爬取的网站
import re
import requests
import os
header = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0"}
response = requests.get("https://pic.netbian.com/",headers=header)
#防止乱码对response返回数据进行解码
response.encoding = response.apparent_encoding
print(response.text)

- 第二步:利用正则表达式/XPath路径筛选出图片链接的相对路径
正则:
#利用正则表达式匹配以字符串 /uploads/allimg/ 开头,后面跟着一个或多个非双引号(")字符的序列
#此处findall函数会找出所有以/uploads/allimg/开头的图片链接的相对路径
image = re.findall("/uploads/allimg/[^\"]+",response.text)

XPath路径
html = etree.HTML(response.text)
image = html.xpath('//a[@target="_blank"]/span/img/@src')

- 第三步: 创建图片链接的绝对路径
如下图,不难发现第二步获取的图片链接与图片源中的链接还有差别,此时需要我们将获取的相对链接扩展为绝对链接
#image获取的是图片链接的相对路径,绝对路径需要添加https://pic.netbian.com/
#创建空列表link用于存储图片链接的绝对路径
link = []
#利用for循将图片链接的绝对路径添加到空列表link中
for i in image:link.append("https://pic.netbian.com/"+i)


- 第四步:创建用于保存爬取图片的文件并保存爬取图片
#for循环每次遍历一个图片链接
for i in range(1,len(link)+1):#遍历的同时创建一个保存图片的文件with open(f"爬虫/image{i}.jpg.","wb") as img:#向图片链接发送Http请求res = requests.get(link[i - 1])#将返回的字节数据写入文件img.write(res.content)img.close()
整体代码演示:
import re
import requests
import os
header = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0"}
response = requests.get("https://pic.netbian.com/",headers=header)
response.encoding = response.apparent_encodingimage = re.findall("/uploads/allimg/[^\"]+",response.text)
link = []
for i in image:link.append("https://pic.netbian.com/"+i)for i in range(1,len(link)+1):with open(f"爬虫/image{i}.jpg.","wb") as img:res = requests.get(link[i - 1])img.write(res.content)img.close()

总结
相关文章:
Python---爬虫
文章目录 目录 前言 一.Http请求/响应模块 requests模块 二.文本筛选模块 re模块 XPath模块 XPath 路径表达式 XPath 语法元素 三. 爬虫模板 爬虫案例 前言 Python爬虫是一种通过自动化程序爬取互联网上的信息的技术。爬虫可以自动访问网页并提取所需的数据,比…...
设计模式之组合设计模式
一、组合设计模式概念 组合模式 (Component) 是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”的层次结构。 组合模式使得用户对单个对象和组合对象的使用具有唯一性。 适用场景 想要表示对象的部分-整体层次结构。想要客户端忽略组合对象与单个对象的…...
Java汽车销售管理
技术架构: springboot mybatis Mysql5.7 vue2 npm node 有需要该项目的小伙伴可以添加我Q:598748873,备注:CSDN 功能描述: 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能&…...
js TypeError: Cannot read property ‘initialize’ of undefined
js TypeError: Cannot read property ‘initialize’ of undefined 在JavaScript开发旅程中,遇到TypeError: Cannot read property ‘initialize’ of undefined这样的错误提示,无疑是令人沮丧的。这个错误通常意味着你试图访问一个未定义对象的initiali…...
【Motion Forecasting】【摘要阅读】BANet: Motion Forecasting with Boundary Aware Network
BANet: Motion Forecasting with Boundary Aware Network 这项工作发布于2022年,作者团队来自于OPPO。这项工作一直被放在arxiv上,并没有被正式发表,所提出的方法BANet在2022年达到了Argoverse 2 test dataset上的SOTA水准。 Method BANet…...
Cpp快速入门语法(下)(2)
文章目录 前言一、函数重载概念与使用C为何支持函数重载? 二、引用概念语法特性权限(常引用)使用场景与指针的区别 三、内联函数四、auto关键字(C11)五、基于范围的for循环(C11)六、指针空值nullptr(C11)总结 前言 承前启后,正文开始! 一、函…...
【GO开发】MacOS上搭建GO的基础环境-Hello World
文章目录 一、引言二、安装Go语言三、配置环境变量(可跳过)四、Hello World五、总结 一、引言 Go语言(Golang)因其简洁、高效、并发性强等特点,受到了越来越多开发者的喜爱。本文将带你一步步在Mac操作系统上搭建Go语…...
探索轻量级语言模型 GPT-4O-mini 的无限可能
随着人工智能技术的日益发展,语言模型正逐渐成为人们日常生活和工作中不可或缺的一部分。其中,GPT-4O-mini 作为一个轻量级大模型,以其强大的功能和易用性吸引了众多关注。本文将带您了解 GPT-4O-mini 的出色表现、应用场景以及如何免费使用这…...
CSS 笔记 1
1. CSS 优先级, 内部大于外部。 2. 几个属性: flex-grow: 1; 让 当前元素 在剩余空间中, 占据尽可能多的高度,确保它能在中间居中。 max-height: 300px; 限制最大高度 300 像素, flex-grow: 1; 导致占的太满了&#x…...
2024/9/16 dataloader、tensorboard、transform
一、pytorch两大法宝元素 假设有一个名为pytorch的包 dir():用于打开包,看里面的内容 help():用于查看具体的内容的用处 二、python文件,python控制台和jupyter的使用对比 三、pytorch读取数据 pytorch读取数据主要涉及到两个类࿱…...
C/C++语言基础--从C到C++的不同(下),15个部分说明C与C++的不同
本专栏目的 更新C/C的基础语法,包括C的一些新特性 前言 1-10在上篇C/C语言基础–从C到C的不同(上);当然C和C的不同还有很多,本人暂时只总结这些,其他的慢慢更新;上一篇C/C语言基础–从C到C的不同(上&…...
物理感知扩散的 3D 分子生成模型 - PIDiff 评测
PIDiff 是一个针对蛋白质口袋特异性的、物理感知扩散的 3D 分子生成模型,通过考虑蛋白质-配体结合的物理化学原理来生成分子,在原理上,生成的分子可以实现蛋白-小分子的自由能最小。 一、背景介绍 PIDiff 来源于延世大学计算机科学系的 Sang…...
蓝桥杯-基于STM32G432RBT6的LCD进阶(LCD界面切换以及高亮显示界面)
目录 一、页面切换内容详解 1.逻辑解释 2.代码详解 code.c(内含详细讲解) code.h main.c 3.效果图片展示 编辑 二、页面选项高亮内容详解 1.逻辑解释 2.读入数据 FIRST.第一种高亮类型 code.c(内含代码详解) code.…...
2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码
目录 问题 11.1 对这些玻璃文物的表面风化与其玻璃类型、纹饰和颜色的关系进行分析数据探索 -- 单个分类变量的绘图树形图条形图扇形图雷达图 Cramer’s V 相关分析统计检验列联表分析卡方检验Fisher检验 绘图堆积条形图分组条形图 分类模型Logistic回归随机森林 import matplo…...
【3D打印】3D打印机运动控制“Gcode”
一、Gcode是什么? Gcode是一种用于控制数控机床(包括3D打印机)的语言。它由一系列指令组成,每个指令控制机器的一个特定动作。 二、基础术语 G指令:用于控制机器的运动。M指令:用于控制机器的其他功能&a…...
针对Chsrc换源工具的简单脚本
此脚本目前只是针对 X86和aarch64系统,可根据自身需求进行修改,点赞自取 关于工具的详细介绍请看上一篇文章:全平台通用的换源工具Chsrc #!/bin/bashtag1"https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x64-linux&…...
vscode中如何配置c/c++环境
“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩!一、准备工作二、安装 VSCode 插件三、配置 VSCode1. 配置编译任务(tasks.json)2. 配置调试器(launch.json) 四、运行和调…...
【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢?
【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢? 【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢? 文章目录 【梯度消失|梯度爆炸】Vanishing Gradi…...
MAC 地址简化概念(有线 MAC 地址、无线 MAC 地址、MAC 地址的随机化)
一、MAC 地址 MAC 地址(Media Access Control Address),即媒体访问控制地址,也称为物理地址、硬件地址或链路层地址 MAC 地址有时也被称为物理地址,但这并不意味着 MAC 地址属于网络体系结构中的物理层,它…...
SQL_yog安装和使用演示--mysql三层结构
目录 1.什么是SQL_yog 2.下载安装 3.页面介绍 3.1链接主机 3.2创建数据库 3.3建表操作 3.4向表里面填内容 3.5使用指令查看效果 4.连接mysql的指令 4.1前提条件 4.2链接指令 编辑 4.3创建时的说明 4.4查看是不是连接成功 5.mysql的三层结构 1.什么是SQL_yog 我…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
