Python正则表达式

一、Python正则表达式
1、正则表达式的概念
通过一组特殊的字符串按照指定的序列定义的一种规则,称为正则表达式。

2、正则表达式的主要作用
主要用于用户输入的数据进行验证,验证用户输入的数据是否符合定义的规则。

3、正则表达式基本语法
例如对手机号码进行正则表达式的编写
reg=^1[35789]\d{9}$
^:表示开始
1:表示第一个字符为数字1
[35789]:从指定的字符中选择一个
\d:表示数字
{n}:n表示数字的个数,表示任意n个数字
+:表示1到n次,字符串出现的次数
*:表示0到n次,字符串出现的次数
?:表示0到1次
w:表示任意字母

4、python中使用re模块定义正则
Import re

5、re中常用的方法
(1) match方法
从第一个字符开始匹配,如果第一个起始字符不匹配,则返回None
import re

s=“www.sohu.com”
print(re.match(“www”,s).span()) #返回匹配的字符串的位置
print(re.match(“com”,s))#与起始字符串不匹配,返回None

运行效果如下:
(0, 3)
None

(2) 使用group方法进行正则匹配
分组根据正则表达式匹配指定的字符,并返回字符信息
lin=“Cats are smarter than dog”

matchObj=re.match(r’(.)are(.?)’,lin,re.M|re.I) #定义正则表达式并与lin中 的字符串进行比对re.M表示多行匹配,re.I表示忽略大小写

print(matchObj.group())#匹配are之前的所有字符
print(matchObj.group(1))#匹配are之前的第1个位置的字符
print(matchObj.group(2))#匹配are之前的第2个位置的字符

(3) seach方法
扫描整个字符串并进行比对,返回第1个成功的匹配位置
import re

s=“www.sohu.com”
print(re.search(“www”,s))
print(re.search(“com”,s))

结果如下:
<re.Match object; span=(0, 3), match=‘www’>
<re.Match object; span=(9, 12), match=‘com’>

二、python中的爬虫
1、主要用于爬取网页中的数据
2、当前网络传输协议
(1) http协议:超文本传输协议,传输的数据格式为html(超文本标记语言)
(2) Https协议:具有安全验证的超文本传输协议,加入了ssl安全证书
(3) ssl:安全套接字协议证书

3、http请求的方式
(1)GET请求方式:请求的参数信息会显示在地址栏中,传输的参数个数不能超过255个字符。
(2)POST请求方式:请求的信息是隐藏的,不会显示在地址栏中,向服务器传递的数据可以达到20M。

4、URL
统一资源定位,实际为请求的网络资源地址。
例如:
http://www.sohu.com/index.html

5、请求的状态码
(1)200:表示请求的资源已响应成功。
(2)404:表示资源不存在
(3)500:请求资源成功,但是服务器内部错误
(4)403:请求的服务器忙,无法响应。

6、网页请求的调试工具
(1) Fiddler:用于调试请求响应的页面信息
(2) 浏览器自带的调试工具,按F12显示调试的网页信息

7、使用urllib爬取网页信息
(1) python3以上版本使用urllib2,引入的组件库为:
Import urllib.request

(2) 获取html对象的方法
html=urllib.request.urlopen(“url地址”);
例如,获取百度首页信息
html=urllib.request.urlopen(“http://www.baidu.com”);

(3) 读取网页信息
x=html.read();

示例如下:
import urllib.request

#获取请求对象
request=urllib.request.Request(“https://www.sohu.com”)

#User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
request.add_header(“User-Agent”,“Mozilla/5.0”) #用于反爬虫处理,伪装为火狐浏览器访问
html=urllib.request.urlopen(request)

print(html.read())

完整的请求响应代码如下所示:
import urllib.request

#获取请求对象
request=urllib.request.Request(“https://www.sohu.com”)

#User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
request.add_header(“User-Agent”,“Mozilla/5.0”) #用于反爬虫处理,伪装为火狐浏览器访问
response=urllib.request.urlopen(request)
print(“请求响应的状态码:”,response.getcode())
print(“获取请求的网站地址:”,response.geturl())
print(response.read())

(4) 使用urllibencode转换字典为搜索的url字符串格式
Urllib.parse.urlencode(字典对象)

示例如下:从键盘输入要搜索的信息进行baidu查询
import urllib.request
import os

base_url=“https://www.baidu.com/s?”

seacherString=input(“请输入要查找的信息:”)

dic={‘wd’:seacherString}

#转换字典为搜索字符串信息
sc=urllib.parse.urlencode(dic)

#拼接要搜索的url地址信息
full_url=base_url+sc
print(“要所搜的信息为:”,full_url)

#获取请求对象
request=urllib.request.Request(full_url)

#User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
request.add_header(“User-Agent”,“Mozilla/5.0”) #用于反爬虫处理,伪装为火狐浏览器访问
response=urllib.request.urlopen(request)

print(response.read())

作业:
(1)实现字典转json字符串和json字符串转字典的操作,实现文件存储。(学生信息管理)
(2)使用正则表达式匹配手机号码
(3)使用urllib搜索从键盘输入的信息

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值