python学习笔记--3.request基本用法与正则匹配

这是在学习Python的时候做的笔记,有些时间了,大概是按照一本挺实用的入门书籍学的,我学习编程的思路一般是掌握基础的变量类型,语法-分支结构 函数调用 类创建 结构体定义,记录一些简单的实例,剩下的就是需要用什么百度现学。

对我来说python的优势是,没有类型要求,不用声明,没有指针,万能数组,库很强大。

import requests
from bs4 import BeautifulSoup  # 网页解析插件
import re  # 匹配正则表达式

# region  request基本用法
url = 'https://www.bilibili.com/'
r = requests.get(url)
print(r.status_code)
print(r.encoding)
print(r.cookies)
print(r.content)  # 网页内容

# 带有参数的请求
payload = {'keyq': ' value1', 'keys': 'value2'}
r = requests.get(url,  params=payload)

# 如果想获取来自服务器的原始套接字响应,可以取得 r.raw 。 不过需要在初始请求中设置 stream=True 。
r = requests.get('https://github.com/timeline.json', stream=True)
r.raw
r.raw.read(10)

# post 数据
payload = {'keyq': ' value1', 'keys': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print(r.text)
# 如果需要json格式数据 json.dumps(payload)

# 新建文件 file参数

url = 'http://httpbin.org/post'
files = {'file': open('test.txt', 'rb')}
r = requests.post(url, files=files)
print(r.text)

# cookies
url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
print(r.text)
# 每次都是一个新的标签页 长久的登录联系需要session
s = requests.session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)

# 代理 proxies = {"https": "http://41.118.132.69:4433" 参数传递同上
# endregion

# region bs网页解析 match匹配

# region bs解析匹配
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""
soup = BeautifulSoup(html, 'html.parser')  # html解析方式 解析网页
soup.prettify()  # 格式化打印网页文本 带有/n的

# 大功能1 获取指定标签内容
soup.a  # 返回第一个标签
print(soup.p.attrs)  # 返回指定标签中属性值得字典形式
print(soup.p['class'])  #获取标签类名 同soup.p.get('class')

# 大功能2 获取标签里文字内容
print(soup.p.string)

# 获取大标签里的所有子标签  遍历
print(soup.head.contents)
for child in soup.body.children:
    print(child)

for child in soup.descendants:  #递归所有标签
    print(child)

# 父节点
p = soup.p
print(p.parent.name)
content = soup.head.title.string  # 递归所有父节点
for parent in content.parents:
    print(parent.name)
# endregion

# region match匹配

# pattern正则式 string字符串 flags用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
# re.I 匹配对大小写不敏感   re.S  匹配包括换行在内的所有字符  re.X 给予你更灵活的格式以便你将正则表达式写得更易于理解
# re.L 做本地化识别(locale-aware)匹配  re.M  多行匹配,影响 ^ 和 $    re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
url = 'https://www.bilibili.com/'
r = requests.get(url)
txt = r.text.encode(r.encoding).decode('utf-8')  # 特定的解码方式
# txt.replace(old, new, count) 替换字符串
# txt.split('w') 分割为数组


# pattern1 = 'w{3}.bilibili.com/v/*.{3,7}/'  # 匹配www.bilibili等
# pattern2 = '/video/av[0-9]{4,9}/  # 匹配网页'
# r’’来定义规则字符串 防止 这种情况
pattern = re.compile(r'www')  # match 单次匹配 返回第一个结果
txt = "wwwdvbfsiwwwivodnsoiwww"
res = pattern.match(txt)  # 开始匹配
print(res.group())
# re.findall(r’abc’, s) 匹配所有abc

# endregion

# endregion
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值