匹配单个字符
字符 功能 . 匹配任意一个字符(除了\n) [] 匹配[]中列举的字符 \d 匹配数字母,即0-9 \D 匹配非数字 \s 匹配空白,即空格、tab \S 匹配非空白 \w 即匹配a-z,A-Z,0-9、_(慎用) \W 匹配非a-z,A-Z,0-9,_匹配多个字符:
字符 功能 {n} 匹配前一个字符出现n次 {n,m} 匹配前一个字符出现n到m次 * 匹配前一个字符出现0次或者多次 + 匹配前一个字符出现1次或者多次 ? 匹配前一个字符出现0次或者1次匹配开头和结尾:
字符 功能 $ 匹配字符串结尾 ^ 匹配字符串开头(只要是”^”这个字符是在中括号”[]”中被使用的话就是表示字符类的否定, 如果不是的话就是表示限定开头。我这里说的是直接在”[]”中使用, 不包括嵌套使用 。其实也就是说”[]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。)匹配分组
字符 功能 | 匹配左右任意一个表达式 (ab) 将括号中字符作为一个分组 \num 引用分组num匹配到的字符串(比如想与第一个分组一样时,则用\1) (?P<name>) 分组起别名 (?P=name) 引用别名为name分组匹配到的字符串案例:爬取斗鱼上的图片
import re import os import urllib.request import gevent from gevent import monkey monkey.patch_all() def down_img(img_name, img_link): # 可以将网址输入进去,然后下载 img = urllib.request.urlopen(img_link) img_content = img.read() with open(r"E:\python视频和代码\python代码\传智播客\就业班\day08\图片\%s" % img_name, "wb") as f: f.write(img_content) def main(): chaper_url = "https://www.douyu.com/g_yz" # 模拟浏览器,这样的话会对一些发爬虫的网站可以进行爬取 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} req = urllib.request.Request(url=chaper_url, headers=headers) html_code = urllib.request.urlopen(req).read().decode("utf-8") os.mkdir("图片") img_links = re.findall(r"https://rpic.douyucdn.cn.*?\.jpg", html_code) num = 0 for img_link in img_links: if num < len(img_links): gevent.joinall([gevent.spawn(down_img, "%d.jpg" % num, img_link)]) num += 1 else: break if __name__ == "__main__": main()