接着上一篇
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