从0到1—POC编写基础篇(二)

接着上一篇

POC常用基础模块

urllib 模块


Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。
urllib 包 包含以下几个模块:
●urllib.request - 打开和读取 URL。
●urllib.error - 包含 urllib.request 抛出的异常。
●urllib.parse - 解析 URL。
●urllib.robotparser - 解析 robots.txt 文件。

使用urllib 模块实现一个请求

import urllib.request
import urllib.parse

url = 'https://www.runoob.com/?s='
keyword = 'Python 教程'
key_code = urllib.request.quote(keyword)
url_all = url + key_code
header = {
    'User-Agent': 'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
request = urllib.request.Request(url_all, headers=header)
reponse = urllib.request.urlopen(request).read().decode('utf-8')
print(reponse)

urllib.request 定义了一些打开 URL 的函数和类,包含授权验证、重定向、浏览器 cookies等。
urllib.request 可以模拟浏览器的一个请求发起过程。
使用 urllib.request 的 urlopen 方法来打开一个 URL
更多使用方法:Python urllib | 菜鸟教程

requests 模块

Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。
requests 模块比 urllib 模块更简洁,使用更加的方便

# 导入 requests 包
import requests

# 发送请求
res = requests.get('https://www.runoob.com/')
print(res.status_code) # 获取响应状态码
print(res.headers) # 获取响应头
print(res.content) # 获取响应内容
print(res.text) # 返回网页内容

更多响应信息如下:

requests 方法如下表:

# 导入 requests 包
import requests

# 表单参数,参数名为 fname 和 lname
myobj = {'fname': 'RUNOOB','lname': 'Boy'}

# 发送请求
x = requests.post('https://www.runoob.com/try/ajax/demo_post2.php', data = myobj)

# 返回网页内容
print(x.text)

发送请求我们可以在请求中附加额外的参数,例如请求头、查询参数、请求体等,例如:
 

headers = {'User-Agent': 'Mozilla/5.0'}  # 设置请求头
params = {'key1': 'value1', 'key2': 'value2'}  # 设置查询参数
data = {'username': 'example', 'password': '123456'}  # 设置请求体
response = requests.post('https://www.runoob.com', headers=headers, params=params,

设置代理 proxies,设置超时处理,取消https告警
 

proxy = {'http': 'http://127.0.0.1:8080','https': 'http://127.0.0.1:8080'}
requests.get(url,headers,data,verify=False,proxies=proxy,timeout=10)
url —— 请求的url
headers —— 请求时构造的请求头
data —— 请求时带入的数据
verify —— 取消https告警
proxies —— 代理设置
timeout —— 请求响应超时处理

re 模块

re.match 函数
re.match(pattern, string, flags=0) 函数用于匹配字符串的开头是否符合指定的正则表达式模式。它从字符串的开头开始匹配,如果匹配成功,就返回一个 Match 对象,否则返回 None。
参数解释:
●pattern:表示正则表达式模式的字符串。
●string:表示要匹配的字符串。
●flags:表示正则表达式的匹配标志,可选参数,默认值为 0。
使用示例:

import re
 
 text = 'hello, world!'
 pattern = r'^h.*?d!'
 match = re.match(pattern, text)
 if match:
     print(match.group())

输出结果为:
hello, w

re.search 函数
re.search(pattern, string, flags=0) 函数用于在字符串中查找符合正则表达式模式的子串,如果找到,就返回一个 Match 对象,否则返回 None。
参数解释:
●pattern:表示正则表达式模式的字符串。
●string:表示要查找的字符串。
●flags:表示正则表达式的匹配标志,可选参数,默认值为 0。
使用示例:

import re
 
 text = 'hello, world!'
 pattern = r'w.*?d'
 match = re.search(pattern, text)
 if match:
     print(match.group())

输出结果为:
world

re.findall 函数
re.findall(pattern, string, flags=0) 函数用于在字符串中查找符合正则表达式模式的所有子串,并以列表的形式返回结果。
参数解释:
●pattern:表示正则表达式模式的字符串。
●string:表示要查找的字符串。
●flags:表示正则表达式的匹配标志,可选参数,默认值为 0。
使用示例:
 

import re
 
 text = 'Hello, world!'
 pattern = r'[a-z]+'
 matches = re.findall(pattern, text, re.IGNORECASE)
 print(matches)

输出结果为:
['Hello', 'world']

re.finditer 函数
re.finditer(pattern, string, flags=0) 函数用于在字符串中查找符合正则表达式模式的所有子串,并以迭代器的形式返回结果,可以逐个遍历迭代器中的匹配结果。
参数解释:
●pattern:表示正则表达式模式的字符串。
●string:表示要查找的字符串。
●flags:表示正则表达式的匹配标志,可选参数,默认值为 0。
使用示例:

import re
 
 text = 'Hello, world!'
 pattern = r'[a-z]+'
 for match in re.finditer(pattern, text, re.IGNORECASE):
     print(match.group())

输出结果为:

Hello

world

re.split 函数
re.split(pattern, string, maxsplit=0, flags=0) 函数用于根据正则表达式模式的匹配结果分割字符串,并以列表形式返回分割后的子串。
参数解释:
●pattern:表示正则表达式模式的字符串。
●string:表示要分割的字符串。
●maxsplit:表示最大分割次数,可选参数,默认值为 0,表示分割所有匹配结果。
●flags:表示正则表达式的匹配标志,可选参数,默认值为 0。
使用示例:

import re
 
 text = 'Hello, world!'
 pattern = r'[, ]+'
 result = re.split(pattern, text)
 print(result)

输出结果为:
['Hello', 'world!']

re.sub 函数
re.sub(pattern, repl, string, count=0, flags=0) 函数用于在字符串中查找并替换所有符合正则表达式模式的子串,然后返回替换后的字符串。
参数解释:
●pattern:表示正则表达式模式的字符串。
●repl:表示替换的字符串或者函数。
●string:表示要查找和替换的原始字符串。
●count:表示最大替换次数,可选参数,默认值为 0,表示替换所有匹配结果。
●flags:表示正则表达式的匹配标志,可选参数,默认值为 0。
使用示例:

import re
 
 text = 'I like Python!'
 pattern = r'Python'
 replacement = 'Java'
 new_text = re.sub(pattern, replacement, text)
 print(new_text)

输出结果为:
I like Java!

更多详细连接:Python3 正则表达式 | 菜鸟教程
正则在线测试:https://c.runoob.com/front-end/854
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新技术前沿-2024-大型语言模型LLM的本地化部署

参考快速入门LLM 参考究竟什么是神经网络 1 深度学习 1.1 神经网络和深度学习 神经网络是一种模拟人脑神经元工作方式的机器学习算法,也是深度学习算法的基本构成块。神经网络由多个相互连接的节点(也称为神经元或人工神经元)组成,这些节点被组织成层次结构。通过训练,…

【网络安全】在网络中如何对报文和发送实体进行鉴别?

目录 1、报文鉴别 (1)使用数字签名进行鉴别 (2)密码散列函数 (3)报文鉴别码 2、实体鉴别 鉴别(authentication) 是网络安全中一个很重要的问题。 一是要鉴别发信者,即验证通信的对方的确是…

小扎宣布开放 Meta Horizo​​n OS

日前,Meta以“混合现实的新时代”为题的博文宣布向第三方制造商开放Meta Horizon OS,包括华硕、联想和微软Xbox等等: Meta正在朝着为元宇宙建立一个更开放的计算平台的愿景迈出下一步。Meta正在向第三方硬件制造商开放赋能Meta Quest设备的操…

使用 IPAM 解决方案简化分布式网络管理

随着组织在数字领域的全球扩张,分布式网络是不可避免的,这意味着,随着 IT 基础设施的发展,组织需要适应,这包括在不断增长的系统需求、应用程序堆栈、各种协议和安全防御中监控、现代化和简化流程和资源。在有效管理现…

AJAX——案例

1.商品分类 需求&#xff1a;尽可能同时展示所有商品分类到页面上 步骤&#xff1a; 获取所有的一级分类数据遍历id&#xff0c;创建获取二级分类请求合并所有二级分类Promise对象等待同时成功后&#xff0c;渲染页面 index.html代码 <!DOCTYPE html> <html lang&qu…

Pycharm代码规范与代码格式化插件安装

给大家分享两个PyCharm编辑器的插件&#xff0c;分别是pylint与autopep8&#xff0c;主要用来提高我们在使用python进行自动化测试编写以及性能测试脚本编写过程中的代码质量、可读性与美观性。 pylint&#xff1a; ● 代码检查工具&#xff1a;它可以帮助检查代码中的错误、…

pnpm 安装后 node_modules 是什么结构?为什么 webpack 不识别 pnpm 安装的包?

本篇研究&#xff1a;使用 pnpm 安装依赖时&#xff0c;node_modules 下是什么结构 回顾 npm3 之前&#xff1a;依赖树 缺点&#xff1a; frequently packages were creating too deep dependency trees, which caused long directory paths issue on Windowspackages were c…

明日方舟游戏助手:一键完成日常任务 | 开源日报 No.233

MaaAssistantArknights/MaaAssistantArknights Stars: 11.6k License: AGPL-3.0 MaaAssistantArknights 是一款《明日方舟》游戏的小助手&#xff0c;基于图像识别技术&#xff0c;支持一键完成全部日常任务。 刷理智、掉落识别及上传企鹅物流智能基建换班、自动计算干员效率…

《ElementPlus 与 ElementUI 差异集合》el-select 差异点,如:高、宽、body插入等

宽度 Element UI 父元素不限制宽度时&#xff0c;默认有个宽度 207px&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#xff1b; Element Plus 父元素不限制宽度时&#xff0c;默认100%&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#x…

哪些因素影响了PCB电路板切割精度?

PCB电路板切割是电子制造过程中一个至关重要的环节&#xff0c;其精度对后续工序的质量和效率具有决定性影响。因此&#xff0c;了解影响PCB电路板切割精度的原因&#xff0c;对于提高电子产品的质量和生产效率具有重要意义。 1. PCB分板机稳定性 PCB分板机的性能直接影响到切…

李沐62_序列到序列学习seq2seq——自学笔记

"英&#xff0d;法”数据集来训练这个机器翻译模型。 !pip install --upgrade d2l0.17.5 #d2l需要更新import collections import math import torch from torch import nn from d2l import torch as d2l循环神经网络编码器。 我们使用了嵌入层&#xff08;embedding l…

广东理工学院携手泰迪智能科技成功部署人工智能实验室

广东理工学院是经国家教育部批准设立的全日制普通本科院校&#xff0c;入选全国应用型人才培养工程培养基地、国家级众创空间试点单位、广东省高校电子商务人才孵化基地。开设34个本科专业&#xff0c;涵盖工学、经济学、管理学、文学、艺术学、教育学等6大学科门类&#xff0c…

【docker】拉取人大金仓KingbaseES数据库镜像速度很慢问题

作为一种新兴的虚拟化方式&#xff0c;Docker 跟传统的虚拟化方式相比具有众多的优势。 对于学习新技术、快速搭建实验环境等是很不错的选择。优势大致总结如下&#xff1a; 1.镜像拉取速度对比 速度前后对比&#xff0c;提升10倍不止&#xff0c;很快将镜像文件下载至本地。 …

Java常见面试题总结

文章目录 1. 什么是线程和进程?2. 请简要描述线程与进程的关系,区别及优缺点&#xff1f;3. 什么是堆和方法区&#xff1f;4. 并发与并行的区别5. 同步和异步的区别6.为什么要使用多线程? 优点&#xff1f;&#xff08;重要&#xff09;7. 使用多线程可能带来什么问题?8. 如…

python爬虫 - 爬取html中的script数据(zum.com新闻信息 )

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法&#xff0c;编写爬虫代码3. 使用re.search 方法&#xff0c;编写爬虫代码 1. 分析页面内容数据格式 &#xff08;1&#xff09;打开 https://zum.com/ &#xff08;2&#xff09;按F12&#xff08;或 在网页上右键 --…

SpringCloud Alibaba--nacos简介和配置管理和登录

目录 一.理论基础 二.nacos 2.1 简介 2.2 安装 三.父项目 三.生产者 3.1 配置依赖 3.2 配置文件 3.3 启动类 3.4 控制类 四.消费者 4.1 配置依赖 4.2 配置文件 4.3 启动类 4.4 feign的接口 五.效果 六.负载均衡--权重算法 6.1重启nacos 6.2 设置权重 6.3 设…

SSH Key生成

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

「React Native」为什么要选择 React Native 作为的跨端方案

文章目录 前言一、常见因素二、举个栗子2.1 项目背景2.2 为什么选择 React Native2.3 项目实施2.4 成果总结 前言 没有完美的跨端技术&#xff0c;只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 一、常见因素 共享代码库&#xff1a; React Native 允许开发者编写…

一个docker配置mysql主从服务器

这也就是因为穷&#xff0c;不然谁用一个docker配置主从&#xff0c;哈哈 既然成功了就记录下。过程挺折磨人的。 首先要保证你的电脑安装好了docker 为了保证docker当中主从能正常连网&#xff0c;现在docker里面创建一个网络环境 docker network create --driver bridge mysq…

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian)

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian) clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;% 读取图像 image imread(lena.png); % 转换为灰度图像 gray_image rgb2gray(image); % 转换为double类型以进行计算…