初识正则表达式
(前面正则有点无聊,但是必学内容,会的师傅可以看后面实操)
正则:用来匹配字符产的一门表达式语言
测试方式:在线正则表达式测试
1.正则支持普通字符
2.元字符,即一个符号匹配部分对应内容
\d 匹配0-9的数字 \d\d 一行提取2个数字
\w 匹配数字、字母、下划线(0-9、a-z、_)
\W \w取反
\D \d取反
[abc] 自定义匹配abc
[^abc 】(英文的】)
[abc]取反
. 除了换行符都可以匹配。
-
量词
控制,前面元字符出现的频次
+,前面的元字符出现1次或多次
*,前面的元字符出现0次或多次。贪婪匹配,尽可能多的匹配数据
? 前面的元字符,出现0次或一次
-
惰性匹配(重点)
玩儿吃鸡游戏,晚上一起上游戏,你干嘛呢?打游戏阿
玩儿.*游戏
*是贪婪匹配,尽可能多的匹配数据,因此匹配结果为:(玩儿吃鸡游戏,晚上一起上游戏,你干嘛呢?打游戏)
玩儿.*?游戏
?匹配与“玩儿”最近的”游戏“,匹配结果为:(玩儿吃鸡游戏)
.*? 惰性匹配 匹配距离XXX最近的内容
在爬虫中的作用可以提取html中自己需要的文字信息(后续推进如何删除div,直接提取文字信息
Python内置模块re(使用正则表达式)
1.基本函数的学习
re.findall(r"元字符",”正则“)查找所有,帮忙把正则所匹配的内容返回
import re result = re.findall(r"\d+","今天我吃了3碗饭,换了花了166元") # 查找所有,帮忙把正则所匹配的内容返回;拿到的是列表 print(result) # 返回结果:['3', '166']re.search(r"元字符",”正则“) 只拿第一个结果即返回
result =re.search(r"\d+","今天我吃了3碗饭,换了花了166元") # 只拿第一个结果即返回 print(result) # 返回结果是一个Match对象,如果需要返回数字则需result.group()re.finditer(r"元字符",”正则“) 把所有结果放入迭代器中,iterator中result = re.finditer(r"\d+","今天我吃了3碗饭,换了花了166元") # 把所有结果放入迭代器中,iterator, for item in result: print(item) print(item.group()) print(f"result结果为:{result}") #返回结果 `<re.Match object; span=(5, 6), match='3'>` `3` `<re.Match object; span=(13, 16), match='166'>` `166` `result结果为:<callable_iterator object at 0x000002C352317340>`
预加载 re.compile(r”元字符“)编译,提前准备好正则,需要时直接调用
# 预加载 obj = re.compile(r"\d+") # compile编译,提前准备好正则,需要时直接调用 result = obj.findall("今天我吃了3碗饭,换了花了166元") print(result) # 返回结果:['3', '166']
来个小小的实操
s = """ <div><a href="baidu.com">我是百度</a> </div> <div><a href="qq.com">我是腾讯</a> </div> <div><a href="163.com">我是网易</a> </div> """ obj=re.compile(r'<div><a href=".*?">.*?</a> </div>') result = obj.finditer(s) for item in result: print(item.group()) # 返回结果: # <div><a href="baidu.com">我是百度</a> </div> # <div><a href="qq.com">我是腾讯</a> </div> # <div><a href="163.com">我是网易</a> </div>
优化((?P<name>.*?)取出来的数据分到name组中;
s = """ <div><a href="baidu.com">我是百度</a> </div> <div><a href="qq.com">我是腾讯</a> </div> <div><a href="163.com">我是网易</a> </div> """ obj = re.compile(r'<div><a href="(?P<url>.*?)">(?P<txt>.*?)</a> </div>') result = obj.finditer(s) for i in result: url = i.group("url") txt = i.group("txt") print(url,txt)
3.正则爬虫实战
需求:
爬取豆瓣前250部电影的名称,评分及评分人数;
思路:先查看0网站源代码,发现有要提取的信息,那么
首先,提取源代码
然后对源代码进行正则,取出想要获取的数据
最后对数据进行存储
-
提取网站源代码
import requests url = "https://movie.douban.com/top250" resp = requests.get(url) resp.encode= "utf-8" print(resp.text) # 有反爬,无法输出源代码
原因
解决方法:更改请求头信息
head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0" # 浏览器请求头信息 } resp = requests.get(url,headers=head)
即:re.S可以让.匹配换行符
import requests import re # 1.提取源代码 url = "https://movie.douban.com/top250" head = { # UA 服务器对当前的网络设备进行检测 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0" # 浏览器请求头信息 } resp = requests.get(url,headers=head) # 处理一个小小的反爬,UA resp.encode= "utf-8" txt = resp.text print(txt) # 有反爬,无法输出源代码 2. 处理源代码,提取自己需要的数据 re.S可以让.匹配换行符 obj = re.compile(r' <div class="item">.*?<span class="title">(?P<name>.*?)</span>' r'.*?<br>(?P<year>.*?) .*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>.*? ' # txt代码是每行换行的,而.不匹配换行符,即运行到第一个换行符就结束了 r'<span>(?P<num>.*?)人评价</span>', re.S) # re.S可以让.匹配换行符 result = obj.finditer(resp.text) for item in result: dic = item.groupdict() dic['year']=dic['year'].strip() #去掉年份左右两边的空白,换行符,制表符 print(dic) # 输出结果 # {'name': '肖申克的救赎', 'year': '1994', 'score': '9.7', 'num': '3075162'} # {'name': '霸王别姬', 'year': '1993', 'score': '9.6', 'num': '2270533'} # {'name': '阿甘正传', 'year': '1994', 'score': '9.5', 'num': '2289813'} # {'name': '泰坦尼克号', 'year': '1997', 'score': '9.5', 'num': '2329954'} # {'name': '千与千寻', 'year': '2001', 'score': '9.4', 'num': '2378567'} # {'name': '美丽人生', 'year': '1997', 'score': '9.5', 'num': '1399779'} # {'name': '这个杀手不太冷', 'year': '1994', 'score': '9.4', 'num': '2410192'} # {'name': '星际穿越', 'year': '2014', 'score': '9.4', 'num': '2001104'} # {'name': '盗梦空间', 'year': '2010', 'score': '9.4', 'num': '2190419'} # {'name': '楚门的世界', 'year': '1998', 'score': '9.4', 'num': '1858604'} # {'name': '辛德勒的名单', 'year': '1993', 'score': '9.5', 'num': '1183622'} # {'name': '忠犬八公的故事', 'year': '2009', 'score': '9.4', 'num': '1465284'} # {'name': '海上钢琴师', 'year': '1998', 'score': '9.3', 'num': '1768311'} # {'name': '三傻大闹宝莱坞', 'year': '2009', 'score': '9.2', 'num': '1961211'} # {'name': '放牛班的春天', 'year': '2004', 'score': '9.3', 'num': '1390726'} # {'name': '机器人总动员', 'year': '2008', 'score': '9.3', 'num': '1395804'} # {'name': '疯狂动物城', 'year': '2016', 'score': '9.2', 'num': '2087466'} # {'name': '无间道', 'year': '2002', 'score': '9.3', 'num': '1462178'} # {'name': '控方证人', 'year': '1957', 'score': '9.6', 'num': '636030'} # {'name': '大话西游之大圣娶亲', 'year': '1995', 'score': '9.2', 'num': '1616690'} # {'name': '熔炉', 'year': '2011', 'score': '9.3', 'num': '983991'} # {'name': '教父', 'year': '1972', 'score': '9.3', 'num': '1033846'} # {'name': '触不可及', 'year': '2011', 'score': '9.3', 'num': '1203540'} # {'name': '当幸福来敲门', 'year': '2006', 'score': '9.2', 'num': '1601769'} # {'name': '寻梦环游记', 'year': '2017', 'score': '9.1', 'num': '1814757'}
但提取的数据也只是界面中第一页的数据,如何提取前250部电影的数据呢?
1.还是查看网站信息,发现,当我点击第二页时,网站后缀改成?start=25&filter,我点击第三页时网站后缀改成?start=50&filter
即网址的变化影响界面数据改变,并且发现,(当前页数-1)*25即为start的值,如何自动化让其start=“”不断跳转自动提取数据呢?
可以想到一个函数,range(1,11),即是提取(1,2,3,4,5,6,7,8,9,10)数据来直接影响url,进而提取每页的源代码并提取数据;即,
import re import requests for i in range(1,11): page = (i-1)*25 url = f"https://movie.douban.com/top250?start={page}&filter=" # print(url) head = { # UA 服务器对当前的网络设备进行检测 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0" # 浏览器请求头信息 } resp = requests.get(url, headers=head) # 处理一个小小的反爬,UA resp.encoding='utf-8' # print(resp.text) obj = re.compile(r' <div class="item">.*?<span class="title">(?P<name>.*?)</span>' r'.*?<br>(?P<year>.*?) .*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>.*? ' # txt代码是每行换行的,而.不匹配换行符,即运行到第一个换行符就结束了 r'<span>(?P<num>.*?)人评价</span>', re.S) # re.S可以让.匹配换行符 result = obj.finditer(resp.text) for i in result: dic = i.groupdict() dic['year']=dic['year'].split() print(dic) # 输出结果 # {'name': '肖申克的救赎', 'year': ['1994'], 'score': '9.7', 'num': '3075162'} # {'name': '霸王别姬', 'year': ['1993'], 'score': '9.6', 'num': '2270536'} # {'name': '阿甘正传', 'year': ['1994'], 'score': '9.5', 'num': '2289813'} # {'name': '泰坦尼克号', 'year': ['1997'], 'score': '9.5', 'num': '2329954'} # {'name': '千与千寻', 'year': ['2001'], 'score': '9.4', 'num': '2378579'} # {'name': '美丽人生', 'year': ['1997'], 'score': '9.5', 'num': '1399784'} # {'name': '这个杀手不太冷', 'year': ['1994'], 'score': '9.4', 'num': '2410192'} # {'name': '星际穿越', 'year': ['2014'], 'score': '9.4', 'num': '2001105'} # {'name': '盗梦空间', 'year': ['2010'], 'score': '9.4', 'num': '2190435'} # {'name': '楚门的世界', 'year': ['1998'], 'score': '9.4', 'num': '1858612'} # {'name': '辛德勒的名单', 'year': ['1993'], 'score': '9.5', 'num': '1183626'} # {'name': '忠犬八公的故事', 'year': ['2009'], 'score': '9.4', 'num': '1465286'} # {'name': '海上钢琴师', 'year': ['1998'], 'score': '9.3', 'num': '1768312'} # {'name': '三傻大闹宝莱坞', 'year': ['2009'], 'score': '9.2', 'num': '1961220'} # {'name': '放牛班的春天', 'year': ['2004'], 'score': '9.3', 'num': '1390726'} # {'name': '机器人总动员', 'year': ['2008'], 'score': '9.3', 'num': '1395814'} # {'name': '疯狂动物城', 'year': ['2016'], 'score': '9.2', 'num': '2087466'} # {'name': '无间道', 'year': ['2002'], 'score': '9.3', 'num': '1462178'} # {'name': '控方证人', 'year': ['1957'], 'score': '9.6', 'num': '636030'} # {'name': '大话西游之大圣娶亲', 'year': ['1995'], 'score': '9.2', 'num': '1616693'} # {'name': '熔炉', 'year': ['2011'], 'score': '9.3', 'num': '983999'} # {'name': '教父', 'year': ['1972'], 'score': '9.3', 'num': '1033846'} # {'name': '触不可及', 'year': ['2011'], 'score': '9.3', 'num': '1203556'} # {'name': '当幸福来敲门', 'year': ['2006'], 'score': '9.2', 'num': '1601771'} # {'name': '寻梦环游记', 'year': ['2017'], 'score': '9.1', 'num': '1814800'} # {'name': '末代皇帝', 'year': ['1987'], 'score': '9.3', 'num': '956212'} # {'name': '龙猫', 'year': ['1988'], 'score': '9.2', 'num': '1338063'} # {'name': '怦然心动', 'year': ['2010'], 'score': '9.1', 'num': '1939022'} # {'name': '哈利·波特与魔法石', 'year': ['2001'], 'score': '9.2', 'num': '1299150'} # {'name': '活着', 'year': ['1994'], 'score': '9.3', 'num': '908489'} # {'name': '蝙蝠侠:黑暗骑士', 'year': ['2008'], 'score': '9.2', 'num': '1127624'} # {'name': '指环王3:王者无敌', 'year': ['2003'], 'score': '9.3', 'num': '855407'} # {'name': '我不是药神', 'year': ['2018'], 'score': '9.0', 'num': '2226059'} # {'name': '乱世佳人', 'year': ['1939'], 'score': '9.3', 'num': '736906'} # {'name': '飞屋环游记', 'year': ['2009'], 'score': '9.1', 'num': '1408326'} # {'name': '素媛', 'year': ['2013'], 'score': '9.3', 'num': '731691'} # {'name': '哈尔的移动城堡', 'year': ['2004'], 'score': '9.1', 'num': '1180880'} # {'name': '让子弹飞', 'year': ['2010'], 'score': '9.0', 'num': '1806289'} # {'name': '十二怒汉', 'year': ['1957'], 'score': '9.4', 'num': '534450'} # {'name': '何以为家', 'year': ['2018'], 'score': '9.1', 'num': '1106784'} # {'name': '海蒂和爷爷', 'year': ['2015'], 'score': '9.3', 'num': '695322'} # {'name': '猫鼠游戏', 'year': ['2002'], 'score': '9.1', 'num': '1115709'} # {'name': '摔跤吧!爸爸', 'year': ['2016'], 'score': '9.0', 'num': '1652781'} # {'name': '天空之城', 'year': ['1986'], 'score': '9.2', 'num': '945872'} # {'name': '鬼子来了', 'year': ['2000'], 'score': '9.3', 'num': '669072'} # {'name': '少年派的奇幻漂流', 'year': ['2012'], 'score': '9.1', 'num': '1418328'} # {'name': '钢琴家', 'year': ['2002'], 'score': '9.3', 'num': '695095'} # {'name': '指环王2:双塔奇兵', 'year': ['2002'], 'score': '9.2', 'num': '803909'} # {'name': '大话西游之月光宝盒', 'year': ['1995'], 'score': '9.0', 'num': '1287682'} # {'name': '闻香识女人', 'year': ['1992'], 'score': '9.1', 'num': '953311'} # {'name': '死亡诗社', 'year': ['1989'], 'score': '9.2', 'num': '800194'} # {'name': '绿皮书', 'year': ['2018'], 'score': '8.9', 'num': '1765280'} # {'name': '大闹天宫', 'year': ['1961(中国大陆)', '/', '1964(中国大陆)', '/', '1978(中国大陆)'], 'score': '9.4', 'num': '472673'} # {'name': '罗马假日', 'year': ['1953'], 'score': '9.1', 'num': '997203'} # {'name': '黑客帝国', 'year': ['1999'], 'score': '9.1', 'num': '890172'} # {'name': '指环王1:护戒使者', 'year': ['2001'], 'score': '9.1', 'num': '902044'} # {'name': '教父2', 'year': ['1974'], 'score': '9.3', 'num': '594072'} # {'name': '天堂电影院', 'year': ['1988'], 'score': '9.2', 'num': '709719'} # {'name': '狮子王', 'year': ['1994'], 'score': '9.1', 'num': '902064'} # {'name': '辩护人', 'year': ['2013'], 'score': '9.2', 'num': '625860'} # {'name': '饮食男女', 'year': ['1994'], 'score': '9.2', 'num': '667827'} # {'name': '搏击俱乐部', 'year': ['1999'], 'score': '9.0', 'num': '905925'} # {'name': '本杰明·巴顿奇事', 'year': ['2008'], 'score': '9.0', 'num': '1045045'} # {'name': '美丽心灵', 'year': ['2001'], 'score': '9.1', 'num': '813750'} # {'name': '穿条纹睡衣的男孩', 'year': ['2008'], 'score': '9.2', 'num': '605745'} # {'name': '窃听风暴', 'year': ['2006'], 'score': '9.2', 'num': '600373'} # {'name': '情书', 'year': ['1995'], 'score': '8.9', 'num': '1201474'} # {'name': '两杆大烟枪', 'year': ['1998'], 'score': '9.1', 'num': '635553'} # {'name': '音乐之声', 'year': ['1965'], 'score': '9.1', 'num': '642611'} # {'name': '看不见的客人', 'year': ['2016'], 'score': '8.8', 'num': '1358169'} # {'name': '西西里的美丽传说', 'year': ['2000'], 'score': '8.9', 'num': '1036669'} # {'name': '哈利·波特与死亡圣器(下)', 'year': ['2011'], 'score': '9.0', 'num': '893408'} # {'name': '阿凡达', 'year': ['2009'], 'score': '8.8', 'num': '1495461'} # {'name': '拯救大兵瑞恩', 'year': ['1998'], 'score': '9.1', 'num': '685780'} # {'name': '功夫', 'year': ['2004'], 'score': '8.9', 'num': '1232239'} # {'name': '小鞋子', 'year': ['1997'], 'score': '9.2', 'num': '437250'} # {'name': '飞越疯人院', 'year': ['1975'], 'score': '9.1', 'num': '576174'} # {'name': '沉默的羔羊', 'year': ['1991'], 'score': '8.9', 'num': '954084'} # {'name': '布达佩斯大饭店', 'year': ['2014'], 'score': '8.9', 'num': '1013535'} # {'name': '哈利·波特与阿兹卡班的囚徒', 'year': ['2004'], 'score': '9.0', 'num': '800000'} # {'name': '蝴蝶效应', 'year': ['2004'], 'score': '8.9', 'num': '1001528'} # {'name': '禁闭岛', 'year': ['2010'], 'score': '8.9', 'num': '1045946'} # {'name': '致命魔术', 'year': ['2006'], 'score': '8.9', 'num': '913967'} # {'name': '心灵捕手', 'year': ['1997'], 'score': '9.0', 'num': '769450'} # {'name': '超脱', 'year': ['2011'], 'score': '9.0', 'num': '665828'} # {'name': '低俗小说', 'year': ['1994'], 'score': '8.9', 'num': '896929'} # {'name': '摩登时代', 'year': ['1936'], 'score': '9.3', 'num': '323889'} # {'name': '喜剧之王', 'year': ['1999'], 'score': '8.8', 'num': '1028446'} # {'name': '春光乍泄', 'year': ['1997'], 'score': '9.0', 'num': '671846'} # {'name': '海豚湾', 'year': ['2009'], 'score': '9.3', 'num': '370473'} # {'name': '致命ID', 'year': ['2003'], 'score': '8.9', 'num': '887493'} # {'name': '杀人回忆', 'year': ['2003'], 'score': '8.9', 'num': '776498'} # {'name': '美国往事', 'year': ['1984'], 'score': '9.1', 'num': '442889'} # {'name': '哈利·波特与密室', 'year': ['2002'], 'score': '8.9', 'num': '829934'} # {'name': '一一', 'year': ['2000'], 'score': '9.1', 'num': '443953'} # {'name': '红辣椒', 'year': ['2006'], 'score': '9.1', 'num': '518825'} # {'name': '加勒比海盗', 'year': ['2003'], 'score': '8.8', 'num': '913500'} # {'name': '七宗罪', 'year': ['1995'], 'score': '8.8', 'num': '997248'} # {'name': '唐伯虎点秋香', 'year': ['1993'], 'score': '8.7', 'num': '1151402'} # {'name': '狩猎', 'year': ['2012'], 'score': '9.1', 'num': '428282'} # {'name': '7号房的礼物', 'year': ['2013'], 'score': '8.9', 'num': '590251'} # {'name': '蝙蝠侠:黑暗骑士崛起', 'year': ['2012'], 'score': '8.9', 'num': '768530'} # {'name': '甜蜜蜜', 'year': ['1996'], 'score': '8.9', 'num': '616279'} # {'name': '被嫌弃的松子的一生', 'year': ['2006'], 'score': '8.8', 'num': '739847'} # {'name': '爱在黎明破晓前', 'year': ['1995'], 'score': '8.8', 'num': '740335'} # {'name': '超能陆战队', 'year': ['2014'], 'score': '8.8', 'num': '1080437'} # {'name': '第六感', 'year': ['1999'], 'score': '8.9', 'num': '596608'} # {'name': '寄生虫', 'year': ['2019'], 'score': '8.8', 'num': '1459328'} # {'name': '重庆森林', 'year': ['1994'], 'score': '8.8', 'num': '867781'} # {'name': '入殓师', 'year': ['2008'], 'score': '8.9', 'num': '708828'} # {'name': '请以你的名字呼唤我', 'year': ['2017'], 'score': '8.8', 'num': '775750'} # {'name': '爱在日落黄昏时', 'year': ['2004'], 'score': '8.9', 'num': '607238'} # {'name': '幽灵公主', 'year': ['1997'], 'score': '8.9', 'num': '560119'} # {'name': '剪刀手爱德华', 'year': ['1990'], 'score': '8.7', 'num': '1079852'} # {'name': '断背山', 'year': ['2005'], 'score': '8.8', 'num': '743661'} # {'name': '勇敢的心', 'year': ['1995'], 'score': '8.9', 'num': '582079'} # {'name': '菊次郎的夏天', 'year': ['1999'], 'score': '8.9', 'num': '636971'} # {'name': '借东西的小人阿莉埃蒂', 'year': ['2010'], 'score': '8.9', 'num': '591987'} # {'name': '未麻的部屋', 'year': ['1997'], 'score': '9.1', 'num': '384895'} # {'name': '消失的爱人', 'year': ['2014'], 'score': '8.7', 'num': '1018347'} # {'name': '无人知晓', 'year': ['2004'], 'score': '9.1', 'num': '348948'} # {'name': '时空恋旅人', 'year': ['2013'], 'score': '8.8', 'num': '732074'} # {'name': '哈利·波特与火焰杯', 'year': ['2005'], 'score': '8.8', 'num': '722047'} # {'name': '倩女幽魂', 'year': ['1987'], 'score': '8.8', 'num': '778517'} # {'name': '完美的世界', 'year': ['1993'], 'score': '9.1', 'num': '338848'} # {'name': '阳光灿烂的日子', 'year': ['1994'], 'score': '8.8', 'num': '653755'} # {'name': '茶馆', 'year': ['1982(中国大陆)'], 'score': '9.6', 'num': '177404'} # {'name': '小森林 夏秋篇', 'year': ['2014'], 'score': '9.0', 'num': '449813'} # {'name': '天使爱美丽', 'year': ['2001'], 'score': '8.7', 'num': '988265'} # {'name': '侧耳倾听', 'year': ['1995'], 'score': '8.9', 'num': '494537'} # {'name': '驯龙高手', 'year': ['2010'], 'score': '8.8', 'num': '804325'} # {'name': '新世界', 'year': ['2013'], 'score': '8.9', 'num': '485614'} # {'name': '教父3', 'year': ['1990'], 'score': '9.0', 'num': '403053'} # {'name': '怪兽电力公司', 'year': ['2001'], 'score': '8.8', 'num': '722772'} # {'name': '头脑特工队', 'year': ['2015'], 'score': '8.8', 'num': '717256'} # {'name': '幸福终点站', 'year': ['2004'], 'score': '8.8', 'num': '607270'} # {'name': '一个叫欧维的男人决定去死', 'year': ['2015'], 'score': '8.9', 'num': '523537'} # {'name': '傲慢与偏见', 'year': ['2005'], 'score': '8.7', 'num': '860982'} # {'name': '玩具总动员3', 'year': ['2010'], 'score': '8.9', 'num': '555298'} # {'name': '小森林 冬春篇', 'year': ['2015'], 'score': '9.0', 'num': '399963'} # {'name': '被解救的姜戈', 'year': ['2012'], 'score': '8.8', 'num': '650210'} # {'name': '色,戒', 'year': ['2007'], 'score': '8.7', 'num': '888723'} # {'name': '釜山行', 'year': ['2016'], 'score': '8.6', 'num': '1274558'} # {'name': '神偷奶爸', 'year': ['2010'], 'score': '8.7', 'num': '998822'} # {'name': '萤火之森', 'year': ['2011'], 'score': '8.8', 'num': '576127'} # {'name': '九品芝麻官', 'year': ['1994'], 'score': '8.7', 'num': '737479'} # {'name': '哪吒闹海', 'year': ['1979'], 'score': '9.2', 'num': '278588'} # {'name': '告白', 'year': ['2010'], 'score': '8.8', 'num': '706549'} # {'name': '喜宴', 'year': ['1993'], 'score': '9.0', 'num': '396031'} # {'name': '玛丽和马克思', 'year': ['2009'], 'score': '9.0', 'num': '438960'} # {'name': '模仿游戏', 'year': ['2014'], 'score': '8.8', 'num': '687588'} # {'name': '头号玩家', 'year': ['2018'], 'score': '8.6', 'num': '1440114'} # {'name': '大鱼', 'year': ['2003'], 'score': '8.8', 'num': '598124'} # {'name': '花样年华', 'year': ['2000'], 'score': '8.8', 'num': '659219'} # {'name': '射雕英雄传之东成西就', 'year': ['1993'], 'score': '8.7', 'num': '678513'} # {'name': '七武士', 'year': ['1954'], 'score': '9.3', 'num': '214177'} # {'name': '惊魂记', 'year': ['1960'], 'score': '9.0', 'num': '326338'} # {'name': '我是山姆', 'year': ['2001'], 'score': '9.0', 'num': '357819'} # {'name': '血战钢锯岭', 'year': ['2016'], 'score': '8.7', 'num': '820163'} # {'name': '阳光姐妹淘', 'year': ['2011'], 'score': '8.8', 'num': '613016'} # {'name': '恐怖直播', 'year': ['2013'], 'score': '8.7', 'num': '692991'} # {'name': '你的名字。', 'year': ['2016'], 'score': '8.5', 'num': '1508744'} # {'name': '黑客帝国3:矩阵革命', 'year': ['2003'], 'score': '8.8', 'num': '472178'} # {'name': '三块广告牌', 'year': ['2017'], 'score': '8.7', 'num': '871768'} # {'name': '心迷宫', 'year': ['2014'], 'score': '8.8', 'num': '571485'} # {'name': '电锯惊魂', 'year': ['2004'], 'score': '8.7', 'num': '573638'} # {'name': '达拉斯买家俱乐部', 'year': ['2013'], 'score': '8.8', 'num': '480367'} # {'name': '小丑', 'year': ['2019'], 'score': '8.7', 'num': '1073210'} # {'name': '疯狂原始人', 'year': ['2013'], 'score': '8.7', 'num': '881187'} # {'name': '谍影重重3', 'year': ['2007'], 'score': '8.8', 'num': '443743'} # {'name': '心灵奇旅', 'year': ['2020'], 'score': '8.7', 'num': '1059360'} # {'name': '背靠背,脸对脸', 'year': ['1994'], 'score': '9.5', 'num': '156262'} # {'name': '上帝之城', 'year': ['2002'], 'score': '9.0', 'num': '317597'} # {'name': '绿里奇迹', 'year': ['1999'], 'score': '8.9', 'num': '360661'} # {'name': '爱在午夜降临前', 'year': ['2013'], 'score': '8.9', 'num': '438202'} # {'name': '海街日记', 'year': ['2015'], 'score': '8.8', 'num': '485939'} # {'name': '英雄本色', 'year': ['1986'], 'score': '8.6', 'num': '574455'} # {'name': '风之谷', 'year': ['1984'], 'score': '8.9', 'num': '375098'} # {'name': '无间道2', 'year': ['2003'], 'score': '8.8', 'num': '524619'} # {'name': '疯狂的石头', 'year': ['2006'], 'score': '8.6', 'num': '875977'} # {'name': '纵横四海', 'year': ['1991'], 'score': '8.8', 'num': '451746'} # {'name': '2001太空漫游', 'year': ['1968'], 'score': '8.9', 'num': '363206'} # {'name': '雨中曲', 'year': ['1952'], 'score': '9.1', 'num': '247119'} # {'name': '卢旺达饭店', 'year': ['2004'], 'score': '8.9', 'num': '349864'} # {'name': '记忆碎片', 'year': ['2000'], 'score': '8.7', 'num': '637494'} # {'name': '小偷家族', 'year': ['2018'], 'score': '8.7', 'num': '857807'} # {'name': '无敌破坏王', 'year': ['2012'], 'score': '8.7', 'num': '577830'} # {'name': '岁月神偷', 'year': ['2010'], 'score': '8.7', 'num': '594805'} # {'name': '冰川时代', 'year': ['2002'], 'score': '8.6', 'num': '652130'} # {'name': '荒蛮故事', 'year': ['2014'], 'score': '8.8', 'num': '470763'} # {'name': '牯岭街少年杀人事件', 'year': ['1991'], 'score': '8.9', 'num': '334968'} # {'name': '忠犬八公物语', 'year': ['1987'], 'score': '9.2', 'num': '207464'} # {'name': '恐怖游轮', 'year': ['2009'], 'score': '8.5', 'num': '929944'} # {'name': '爆裂鼓手', 'year': ['2014'], 'score': '8.7', 'num': '628493'} # {'name': '魔女宅急便', 'year': ['1989'], 'score': '8.7', 'num': '493852'} # {'name': '东京教父', 'year': ['2003'], 'score': '9.0', 'num': '259876'} # {'name': '大佛普拉斯', 'year': ['2017'], 'score': '8.7', 'num': '511760'} # {'name': '末路狂花', 'year': ['1991'], 'score': '9.0', 'num': '299208'} # {'name': '遗愿清单', 'year': ['2007'], 'score': '8.7', 'num': '500039'} # {'name': '贫民窟的百万富翁', 'year': ['2008'], 'score': '8.6', 'num': '778683'} # {'name': '东邪西毒', 'year': ['1994'], 'score': '8.6', 'num': '605519'} # {'name': '你看起来好像很好吃', 'year': ['2010'], 'score': '8.9', 'num': '353397'} # {'name': '源代码', 'year': ['2011'], 'score': '8.5', 'num': '880777'} # {'name': '可可西里', 'year': ['2004'], 'score': '8.9', 'num': '324534'} # {'name': '疯狂的麦克斯4:狂暴之路', 'year': ['2015'], 'score': '8.7', 'num': '582698'} # {'name': '城市之光', 'year': ['1931'], 'score': '9.3', 'num': '159397'} # {'name': '海边的曼彻斯特', 'year': ['2016'], 'score': '8.6', 'num': '600173'} # {'name': '黑天鹅', 'year': ['2010'], 'score': '8.6', 'num': '813714'} # {'name': '高山下的花环', 'year': ['1984(中国大陆)', '/', '1985'], 'score': '9.5', 'num': '122455'} # {'name': '波西米亚狂想曲', 'year': ['2018'], 'score': '8.6', 'num': '650713'} # {'name': '真爱至上', 'year': ['2003'], 'score': '8.5', 'num': '770457'} # {'name': '芙蓉镇', 'year': ['1987'], 'score': '9.3', 'num': '163330'} # {'name': '爱乐之城', 'year': ['2016'], 'score': '8.4', 'num': '1016893'} # {'name': '青蛇', 'year': ['1993'], 'score': '8.6', 'num': '558787'} # {'name': '雨人', 'year': ['1988'], 'score': '8.7', 'num': '424642'} # {'name': '初恋这件小事', 'year': ['2010'], 'score': '8.5', 'num': '1016319'} # {'name': '终结者2:审判日', 'year': ['1991'], 'score': '8.8', 'num': '362138'} # {'name': '人工智能', 'year': ['2001'], 'score': '8.7', 'num': '474892'} # {'name': '花束般的恋爱', 'year': ['2021'], 'score': '8.6', 'num': '724184'} # {'name': '虎口脱险', 'year': ['1966'], 'score': '8.9', 'num': '276564'} # {'name': '恋恋笔记本', 'year': ['2004'], 'score': '8.5', 'num': '713058'} # {'name': '无耻混蛋', 'year': ['2009'], 'score': '8.7', 'num': '516002'} # {'name': '新龙门客栈', 'year': ['1992'], 'score': '8.7', 'num': '474588'} # {'name': '罗生门', 'year': ['1950'], 'score': '8.8', 'num': '336716'} # {'name': '崖上的波妞', 'year': ['2008'], 'score': '8.6', 'num': '537364'} # {'name': '白日梦想家', 'year': ['2013'], 'score': '8.6', 'num': '567721'} # {'name': '千钧一发', 'year': ['1997'], 'score': '8.8', 'num': '324593'} # {'name': '哈利·波特与死亡圣器(上)', 'year': ['2010'], 'score': '8.6', 'num': '629701'} # {'name': '彗星来的那一夜', 'year': ['2013'], 'score': '8.6', 'num': '634603'} # {'name': '萤火虫之墓', 'year': ['1988'], 'score': '8.7', 'num': '422531'} # {'name': '黑客帝国2:重装上阵', 'year': ['2003'], 'score': '8.7', 'num': '430511'} # {'name': '大红灯笼高高挂', 'year': ['1991'], 'score': '8.8', 'num': '324587'} # {'name': '火星救援', 'year': ['2015'], 'score': '8.5', 'num': '783247'} # {'name': '奇迹男孩', 'year': ['2017'], 'score': '8.6', 'num': '576668'} # {'name': '二十二', 'year': ['2015'], 'score': '8.7', 'num': '303608'} # {'name': '哈利·波特与凤凰社', 'year': ['2007'], 'score': '8.5', 'num': '625841'} # {'name': '战争之王', 'year': ['2005'], 'score': '8.7', 'num': '392806'} # {'name': '血钻', 'year': ['2006'], 'score': '8.7', 'num': '402362'} # {'name': '步履不停', 'year': ['2008'], 'score': '8.8', 'num': '301612'} # {'name': '千年女优', 'year': ['2001'], 'score': '8.8', 'num': '294845'} # {'name': '谍影重重2', 'year': ['2004'], 'score': '8.7', 'num': '375385'} # {'name': '房间', 'year': ['2015'], 'score': '8.8', 'num': '385426'} # {'name': '魂断蓝桥', 'year': ['1940'], 'score': '8.8', 'num': '295184'} # {'name': '蜘蛛侠:平行宇宙', 'year': ['2018'], 'score': '8.6', 'num': '714104'} # {'name': '弱点', 'year': ['2009'], 'score': '8.7', 'num': '335108'} # {'name': '谍影重重', 'year': ['2002'], 'score': '8.6', 'num': '456758'} # {'name': '朗读者', 'year': ['2008'], 'score': '8.6', 'num': '472101'} # {'name': '阿飞正传', 'year': ['1990'], 'score': '8.5', 'num': '542046'} # {'name': '隐藏人物', 'year': ['2016'], 'score': '8.9', 'num': '242597'} # {'name': '冰雪奇缘', 'year': ['2013'], 'score': '8.5', 'num': '751190'}