php正则函数抓取网页连接(python编程快速上手(持续更新中……)概述 )
优采云 发布时间: 2021-10-02 04:25php正则函数抓取网页连接(python编程快速上手(持续更新中……)概述
)
快速上手python编程(持续更新中...) 正则表达式概述
用于检索和替换
正则表达式可以
特定模式的测试字符串
根据一定的规则替换文本
基于模式匹配从字符串中提取字符串(爬虫)
正则表达式组合
正则表达式工具介绍
正则表达式好友
正则表达式用于匹配单个字符 匹配多个字符 匹配开头和结尾
^ 表示匹配下一个字符的开头
$ 表示匹配前一个字符的结尾
重新模块操作
re模块的作用:Python提供了一个模块进行常规操作
"""
1、导入模块
2、通过 match 方法,验证正则
3、判断 验证是否成功
4、如果成功,获取匹配的结果
"""
import re
# 1、导入模块
# 2、通过 match 方法,验证正则
# re.match("正则表达式", "要验证/检测的字符串")
# match() 方法如果匹配成功,返回 match object 对象
# match() 方法如果匹配失败,返回 None
# 正则字符串 要检测的内容
result = re.match("\w{4,20}@163\.com$", "hello@163.com")
# 3、判断 验证是否成功
if result:
print("匹配成功!")
# 4、如果成功,获取匹配的结果
print("匹配结果:", result.group())
else:
print("匹配失败!")
匹配组“|”
"""
1、导入模块
2、通过 match 方法,验证正则
3、判断 验证是否成功
4、如果成功,获取匹配的结果
"""
import re
# 1、导入模块
# 2、通过 match 方法,验证正则
result = re.match("^[0-9]?[0-9]$|^100$", "99")
# 3、判断 验证是否成功
if result:
print("匹配成功!")
# 4、如果成功,获取匹配的结果
print("匹配结果:", result.group())
else:
print("匹配失败!")
匹配组“()”
"""
1、导入模块
2、match() 进行匹配
3、判断匹配的结果
4、取出匹配的内容
"""
import re
# 1、导入模块
# 2、match() 进行匹配
# result = re.match("\w{4,20}@(163|126|qq|sina)\.com$", "hello@126.com")
result = re.match("(\d{3,4})-(\d{7,8})", "010-12345678")
# 3、判断匹配的结果
if result:
print("匹配成功!")
# 4、取出匹配的内容
print("匹配结果:", result.group())
print("提取区号:", result.group(1))
print("提取电话号码:", result.group(2))
else:
print("匹配失败!")
匹配组“\”
?P 给组一个别名,别名是name1
"""
1、导入模块
2、通过 match 方法,验证正则
3、判断 验证是否成功
4、如果成功,获取匹配的结果
"""
import re
# 1、导入模块
# 2、通过 match 方法,验证正则
# \1 --> \ 有特殊用法
# \\ --> \
# \1 表示引用第1个分组
# result = re.match(".*", "asdbasldfj")
result = re.match(".*", "asdbj")
# 3、判断 验证是否成功
if result:
print("匹配成功!")
# 4、如果成功,获取匹配的结果
print("匹配结果:", result.group())
else:
print("匹配失败!")
再先进的方法
1.搜索
#result = re.match(“你好”, “”)
#result = re.search(“你好”, “”)
#match 和搜索的区别
#1)match 从.group中需要检测的字符串的开头开始匹配,失败则返回None
#2)search 从待检测字符串中搜索符合规则规则的内容,如果有则返回匹配对象对象
2.findall
#二、findall("Regular expression", "Content to be found") 搜索所有,返回值是一个列表
#result = re.findall("\d+", "阅读次数:9999,转发次数:6666,评论次数:38")
3.子替换
#三、sub("regular expression", "new content", "string to be替换") 字符串替换(根据正则表达式,找到字符串并替换为指定内容)
#返回值是替换后的字符串findall
#result = re.sub("\d+", "10000", "阅读次数:9999,转发次数:6666,评论次数:38")
4.拆分
#四、split("Regular expression", "String to be split") 根据正则表达式拆分字符串,返回值是一个列表
Python贪婪和非贪婪
"""
1、导入模块
2、通过 match 方法,验证正则
3、判断 验证是否成功
4、如果成功,获取匹配的结果
"""
import re
# 1、导入模块
# 2、通过 match 方法,验证正则
# 贪婪:满足正则的情况下,尽可能多的取内容 默认为贪婪模式
# 非贪婪:满足正则的情况下,尽可能少的取内容
# 把贪婪模式该为非贪婪模式,需要使用符号:? 在+ * ? {} 后面添加? 可以变成非贪婪
# result = re.match("aaa(\d+?)", "aaa123456")
str1 = """
"""
result = re.search('src=\"(.*?)\"', str1)
# 3、判断 验证是否成功
if result:
print("匹配成功!")
# 4、如果成功,获取匹配的结果
print("匹配结果:", result.group())
print("地址:",result.group(1))
else:
print("匹配失败!")
r的作用
"""
1、导入模块
2、通过 match 方法,验证正则
3、判断 验证是否成功
4、如果成功,获取匹配的结果
"""
import re
# 1、导入模块
# 2、通过 match 方法,验证正则
#
# \\ --> \
# r的作用 让正则中的 \ 没有特殊含义(转义) 就是代表原声的 斜杠
result = re.match(r".*", "asdbj")
# 3、判断 验证是否成功
if result:
print("匹配成功!")
# 4、如果成功,获取匹配的结果
print("匹配结果:", result.group())
else:
print("匹配失败!")
简单爬虫_阳光天堂
"""
https
一、定义函数获取列表页的内容页地址 get_movie_links()
1、定义列表的地址 https://www.ygdy8.com/html/gndy/dyzz/list_23_1.html
2、打开url地址,获取数据
3、解码获取到的数据
4、使用正则得到所有的影片内容也地址
二、主函数 main
"""
import urllib.request
import re
def get_movie_links():
"""获取列表页影片信息"""
# 1、定义列表的地址
film_list_url = "https://www.ygdy8.com/html/gndy/dyzz/list_23_1.html"
# 2、打开url地址,获取数据
reponse_list = urllib.request.urlopen(film_list_url)
# 2.1 通过read()读取网络资源数据
response_list_data = reponse_list.read()
# 3、解码获取到的数据
response_list_text = response_list_data.decode("GBK")
# 4、使用正则得到所有的影片内容地址
# 4.1 使用findall() 根据正则查找所有影片对应的内容页地址
url_list = re.findall(r"<a href=\"(.*)\" class=\"ulink\">(.*)</a>", response_list_text)
# 4.2 保存地址
# url_list = [('/html/.......', 'xxx影片'),('/html/.......', 'xxx影片')]
# print(url_list)
# 定义一个字典,用于保存影片信息
films_dict = {}
# 4.3 循环遍历 url_list
i = 1
for content_url,film_name in url_list:
# 拼接内容页地址
content_url = "https://www.ygdy8.com"+content_url
# content_url = 'https://www.ygdy8.com/html/gndy/dyzz/20210920/61870.html'
# print("影片名称:%s,内容页地址:%s" % (film_name, content_url))
# 4.4 打开内容页地址
response_content = urllib.request.urlopen(content_url)
# 4.5 接收内容页数据
# 4.6 读取网络资源
response_content_data = response_content.read()
# 4.7 解码得到内容页的文本内容
response_content_text = response_content_data.decode("GBK")
# 4.8 取出下载地https://www.ygdy8.net址
# print(response_content_text)
result = re.search(r"<a target=\"_blank\" href=\"(.*?)\">", response_content_text)
# print("11111111111", result)
print(result.group(1))
# 字典
# {"xxxx影片": "xxx地址"}
films_dict[film_name] = result.group(1)
print("已经获取%d条信息" % i)
i += 1
return films_dict
def main():
""""""
films_dict = get_movie_links()
# print(films_dict)
# 把字典遍历输出
for film_name,film_link in films_dict.items():
print("%s | %s" % (film_name, film_link))
if __name__ == '__main__':
main()