# match("者则表达式","匹配值")(从第一个开始匹配,若第一个不对则不匹配) str = "X_lady@163.com" result = re.match("\w{4,20}@163\.com", str) if result: print("恭喜:匹配成功") # group在无下标的时候默认打印 print(result.group()) else: print("遗憾:匹配失败") # $(表示结束)
# <div>Python</div> # 正则表达式 # ()分组 \num(与第几个相对应) # <([A-Za-z]+)>.*</\1>
# <div><span>Python</span></div> # 正则表达式为 # <([A-Za-z]+)><([A-Za-z+]+)>.*</\2></\1> # str = "<div><span>Python</span></div>" # result = re.match("<(?P<a>[A-Za-z]+)><(?P<b>[A-Za-z]+)>.*</(?P=b)></(?P=a)>", str) # if result: # print("恭喜:匹配成功") # # group在无下标的时候默认打印 # print(result.group()) # else: # print("遗憾:匹配失败") # # $(表示结束)
# 起别名 # 格式 (?P<name1>正则表达式) 引用(?P=name1)
# match 和search()区别 str = "你好:123,感谢碰见你:889" # result = re.match("\d*", str) # result = re.search(":\d*", str) # findall 是集合须要遍历 result = re.findall("\d*", str) if result: print("恭喜:匹配成功") # group在无下标的时候默认打印 for i in result: print(i) # match <re.Match object; span=(0, 0), match=''> 匹配成功却无值 # <re.Match object; span=(0, 3), match='123'> 须要把字符串去掉才会有值 else: print("遗憾:匹配失败") # $(表示结束)
# 贪婪和非贪婪模式用 ?区分
""" 变量:第一个字符必须是字母数字下划线 使用re模块进行正则表达式进行验证 """ import re # match("者则表达式","匹配值")(从第一个开始匹配,若第一个不对则不匹配) # str = "X_lady@163.com" # result = re.match("\w{4,20}@163\.com", str) # if result: # print("恭喜:匹配成功") # # group在无下标的时候默认打印 # print(result.group()) # else: # print("遗憾:匹配失败") # $(表示结束) # <div>Python</div> # 正则表达式 # ()分组 \num(与第几个相对应) # <([A-Za-z]+)>.*</\1> # <div><span>Python</span></div> # 正则表达式为 # <([A-Za-z]+)><([A-Za-z+]+)>.*</\2></\1> # 起别名 # 格式 (?P<name1>正则表达式) 引用(?P=name1) # str = "<div><span>Python</span></div>" # result = re.match("<(?P<a>[A-Za-z]+)><(?P<b>[A-Za-z]+)>.*</(?P=b)></(?P=a)>", str) # if result: # print("恭喜:匹配成功") # # group在无下标的时候默认打印 # print(result.group()) # else: # print("遗憾:匹配失败") # # $(表示结束) # match 和search()区别 str = "你好:123,感谢碰见你:889" # result = re.match("\d*", str) # result = re.search(":\d*", str) # findall 是集合须要便利 result = re.findall("\d*", str) if result: print("恭喜:匹配成功") # group在无下标的时候默认打印 for i in result: print(i) # match <re.Match object; span=(0, 0), match=''> 匹配成功却无值 # <re.Match object; span=(0, 3), match='123'> 须要把字符串去掉才会有值 else: print("遗憾:匹配失败") # $(表示结束) # 贪婪和非贪婪模式用 ?区分
""" 爬取妹子图全部的妹子图片 """ import requests import re import time import os header = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" } # 获取当前目录 root = os.getcwd() for page in range(8): # 进入当前目录 os.chdir(root) # 建立文件夹 os.mkdir(f"第{page+1}页") # 改变当前文件目录 os.chdir(f"第{page+1}页") response = requests.get(f"https://www.meizitu.com/a/list_1_{page+1}.html", headers=header) response.encoding = "gb2312" if response.status_code == 200: # print(response.text) result = re.findall("""<a target='_blank' href=".*?"><img src="(.*?)" alt="(.*?)"></a>""", response.text) i = 1 for i in result: name = i[1].replace("<b>", "").replace("</b>", "") path = i[0] print(f"{name}{path}") #根据图片地址再次请求(解析) response = requests.get(path, headers=header) # 图片为二进制 wb则为二进制保存 # Python 数字和字符串不能够相加,须要转换类型 with open(f"{str(i)+name}.jpg", "wb") as f: # 响应的文本,内容content f.write(response.content) print(f"{str(i)+name}:{path} 保存成功") time.sleep(1) i += 1 print(f"第{page+1}获取成功,请慢慢欣赏") time.sleep(4)