import re
import urllib.request
‘’’
如何匹配.com或.cn网址,以及如何匹配电话号码
[a-zA-Z]+ 协议至少出现一次
[^\s]* 域名不可能出现空白符,不知道出现多少次
[.com|.cn] 模式选择,要么出现 .com , 要么出现 .cn
‘’’
#匹配.com或.cn网址
string = “百度首页”
pat = “[a-zA-Z]+://[^\s]*[.com|.cn]”
result = re.compile(pat).findall(string)
print(result)
‘’’
[‘http://www.xxxx.com’]
‘’’
string = “百度首页”
pat = ‘[a-zA-Z]+://[^\s]*[.com|.cn]’
result = re.compile(pat).findall(string)
print(result)
‘’’
[‘ftp://www.xxxx.com’]
‘’’
string = “百度首页”
pat = ‘[a-zA-Z]+://[^\s]*[.com|.cn]’
result = re.compile(pat).findall(string)
print(result)
‘’’
[‘ftp://www.csuwhcsbcu.com’]
‘’’
#匹配电话号码
string = “csacas021-12345678cwscs3232-7654321”
pat = “\d{4}-\d{7}|\d{3}-\d{8}”
result = re.compile(pat).findall(string)
print(result)
‘’’
[‘021-12345678’, ‘3232-7654321’]
‘’’
‘’’
简单编写,直接用urllib,爬取xxxx
urllib.request.urlopen() : 可以打开对应的网址,以文件形式爬取
read()读取全部
readline()读取一行
‘’’
data = urllib.request.urlopen(“https://xxxx”).readline()
print(data)
‘’’
爬取xxxx的一个课程页,并自动提取出qq群
decode(“utf-8”) 转码
‘’’
data = urllib.request.urlopen(“https://xxxx”).read().decode(“utf-8”)
pat=“QQ:(\d*?)” #提取的是 () 里的内容
result=re.compile(pat).findall(data)
print(result) #print(result[0]) 提取下标第1个元素
‘’’
提取出版社信息并写入文件中
从
https://read.douban.com/provider/all
中将所有出版社的名字提取出来,写进文件里,把无关信息过滤掉
‘’’
data = urllib.request.urlopen(“https://read.douban.com/provider/all”).read().decode(“utf-8”)
pat=’
result=re.compile(pat).findall(data)
print(result)
‘’’
提出来的效果如下
‘
‘’’
data = urllib.request.urlopen(“https://read.douban.com/provider/all”).read().decode(“utf-8”)
pat=’
result=re.compile(pat).findall(data)
print(result)
‘’’
提出来的效果如下
‘浙江大学出版社’, ‘湛庐文化’
‘’’
data = urllib.request.urlopen(“https://read.douban.com/provider/all”).read().decode(“utf-8”)
pat=’
result=re.compile(pat).findall(data)
print(result[0])
‘’’
提出来的效果如下
安徽文艺出版社
‘’’
data = urllib.request.urlopen(“https://read.douban.com/provider/all”).read().decode(“utf-8”)
pat=’
result=re.compile(pat).findall(data)
for i in range(0,len(result)):
print(result[i])
‘’’
提出来的效果如下
安徽文艺出版社
博集天卷
百花洲文艺出版社
‘’’
#把爬取的结果写进文件里
data = urllib.request.urlopen(“https://read.douban.com/provider/all”).read().decode(“utf-8”)
pat=’
result=re.compile(pat).findall(data)
fh=open(“D:/百度网盘/出版社.txt”,“w”,encoding=“utf-8”) # 出版社.txt 原文件里没有这个 w 覆盖写入 a+ 追加写入
for i in range(0,len(result)):
print(result[i])
fh.write(result[i]+"\n") # 每写一个文件 换一行
fh.close() # 一定要关闭
‘’’
成功了
‘’’