从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.parseurl = '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 retext = '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 retext = '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 retext = '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 retext = '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 retext = '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 retext = '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.hqwc.cn/news/643778.html

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

相关文章

WEB攻防-ASP中间件IIS文件上传解析安全漏洞

漏洞原理: 基于文件 IIS6.0默认不解析;号后面的内容,例如1.asp;.jpg会当成1.asp解析,相当于分号截断。 基于文件夹 IIS6.0会将/*.asp/文件夹下的文件当成asp解析。 案例: 写一个木马文件,并改为jpg后缀 GIF89agif8…

Maven:配置与使用指南1

https://mvnrepository.com Maven 1.maven简介 不同模块的jar包以及同时设计的功能的微小变化版本; 真实的开发环境:我们将我们的源代码在服务器上重新编译重新打包,工程升级维护过程繁琐 1.Maven是一个项目管理工具,将项目开…

代码随想录算法训练营第四十六天| LeetCode139.单词拆分

一、LeetCode139.单词拆分 题目链接/文章讲解/视频讲解:https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html 状态:已解决 1.思路 单词明显就是物品,字符串s明显就是背包,那么问题就变成了物品能不能把背…

IDEA pom.xml依赖警告

IDEA中,有时 pom.xml 中会出现如下提示: IDEA 2022.1 升级了检测易受攻击的 Maven 和 Gradle 依赖项,并建议修正,通过插件 Package Checker 捆绑到 IDE 中。 这并不是引用错误,不用担心。如果实在强迫症不想看到这个提…

高精度模板

高精度模板 1. 高精度加法2. 高精度减法3. 高精度乘法4. 高精度除法 1. 高精度加法 高精度加法其实就是一个模拟过程,模拟我们正常计算。但是要注意的是,我们正常将两个数进行相加的时候说从右往左进行相加的,所以这里我们的字符串也是要从右…

每日一题---反转链表

文章目录 前言1.题目2.代码思路3.参考代码 前言 Leetcode—反转链表 1.题目 2.代码思路 3.参考代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode* reve…

【数据结构】单链表的逻辑结构和物理结构

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

【Java--数据结构】“从扑克到程序:深入探讨洗牌算法的原理与魅力“

前言 以下是学习Java顺序表的一个实例应用———简单的洗牌算法。 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 定义每张扑克牌的属性 生成一副扑克牌(不包含大小王) 洗牌方法 发牌方…

开发区块链DApp应用,引领数字经济新潮流

随着区块链技术的飞速发展,分布式应用(DApp)正成为数字经济中的一股强劲力量。DApp以其去中心化、透明公正的特点,为用户带来了全新的数字体验,开创了数字经济的新潮流。作为一家专业的区块链DApp应用开发公司&#xf…

Linux内核之hook机制:call_void_hook用法实例(六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

在线音乐播放网站项目测试(selenium+Junit5)

在做完在线音乐播放网站项目之后,需要对项目的功能、接口进行测试,利用测试的工具:selenium以及Java的单元测试工具Junit进行测试,下面式测试的思维导图,列出该项目需要测试的所有测试用例: 测试结果&#…

友盟+|如何通过阿里云 Flink+Paimon 实现流式湖仓落地方案

01 友盟介绍 友盟 以“数据智能,驱动业务增长”为使命,为移动应用开发者和企业提供包括统计分析、性能监测、消息推送、智能认证等一站式解决方案。截止 2023 年 6 月,已累计为 270 万移动应用和 980 万家网站,提供十余年的专业数…