Python 的基础和爬虫(2)

Python 的基础和爬虫
正则表达式——进行数据筛选的表达式
a普通字符作为原子
b非打印字符作为原子——\n,\t

import re #正则表达式的包
pat="abc"#正则表达式,查找规则
string="http://yum.iqianyue.com"#字符串
rst1=re.search(pat,string)
print(rst1)
pat2="\n"#\n换行符
string3="'jkdsd
sdc"'
rst3=re.search(pat2,string3)
print(rst3)
#通用字符作为原子\w——匹配任意字母、数字、下划线
#\d匹配任意一个十进制数
#\s匹配任意一个空白字符
#\W匹配任意除了字母、数字、下划线的字符
#\S匹配任意除了一个空白字符的字符
pat3="\w\dpython\w"
string4="fhaf2pythonfsjhf"
rst4=re.search(pat3,string4)
print(rst4)
#[jst],其中jst表示同等地位的,[]表示是j或s或t
pat5="pyth[ojc]n"
string6="fsnpythonsfs"
rst6=re.search(pat5,string6)
print(rst6)#只取ojc其中一个字符
#<re.Match object; span=(3, 9), match='python'>
#元字符——正则表达式具有特殊含义的字符。
#.可匹配任意字符
#^匹配开始的字符,$匹配结束的字符;*匹配出现0次,1次,多次,例如"s*"可表示s,ss,sss;?匹配出现0次,1次字符,例如"s?"可表示s,ss;+匹配1次或多次。
#{3}表示前面这个原子重复出现出现3次,s{3}表示sss;{n,m}表示前面这个原子至少出现了n次,至多出现m次。
#|模式选择符,或;()模式单元,提取某些内容上,中间的某些数据
pat="python|php"
string="abcdphp5267pythonjsajkas"
rst=re.search(pat,string)
print(rst)
#输出结果为php,python这个字符串排在php后面,因此不读取,若要读取,需要使用其他的函数。使用全局匹配函数re.compile(pat1).findall(string),可把满足的条件全部输出。
#模式修正符
#I——忽略大小写;M——进行多行匹配;L--本地化识别匹配;U-根据unicode字符匹配字符;S-让点也匹配换行符。
pat1="python"
pat2="python"
string="hfjfhPythonvjsv"
rst1=re.search(pat1,string)
rst2=re.search(pat2,string,re.I)
print(rst1)#无法匹配,因为大小写区分
print(rst2)
#贪婪模式(尽可能多的匹配)和懒惰模型(尽可能少的匹配)
pat1="p.*y"#贪婪模式
pat2="p.*?y"#懒惰模式
#正则表达函数re.match(),re.search,re.sub()
#re.match()从头开始搜索,pat与string头部必然相同。
#常见的正则实例
pat="[a-zA-Z]+://[^\s]*[.com|.cn]"
string='<a href="http://www.baidu.com">hafasf</a>'
rst2=re.compile(pat).findall(string)
print(rst2)
#从网页提取固定位置的一串数字
pat="<em>QQ:(.*?)</em>"
import urllib.request
import re
data=urllib.request.urlopen("url").read()
data=data.decode("utf-8")
rst=re.compile(pat).findall(str(data))
print(rst)
#<div class="name">北京邮电大学出版社</div>
#抓取一个网页的出版社内容:https://read.douban.com/provider/all
import urllib.request
import re
data=urllib.request.urlopen("https://read.douban.com/provider/all").read()
data=data.decode("utf-8")#转化编码
pat='<div class="name">(.*?)</div>'
rst=re.compile(pat).findall(str(data))
print(rst)
fh=open("F://python_video/出版社.txt","w")#存到本地文档
for i in range(0,len(rst)):
	fh.write(rst[i]+"\n")#按列排列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值