python10

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() # 一定要关闭
‘’’
成功了
‘’’

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值