大家好,小编来为大家解答以下问题,用正则表达式爬取数据,网络爬虫正则表达式,现在让我们一起来看看吧!
通过爬取网页中电影数据。根据指定内容获取该电影中的名称、评价、年份及部分内容,该功能需要导入python中的requests请求、正则表达式re,CSV文件类型python创意简单小作品。
request用来请求某个网站的数据内容。re主要是用来获取匹配的相关数据。CSV文件用来匹配的数据存储到点CSV的文件当中。
以下是代码的详细操作过程,并标注了相关注释,供大家学习参考!
import requests
import re
import csv
# 需要爬取的网址
url = "https://movie.douban.com/top250"
# 定义访问的浏览器,不定义表头,则会抓取数据为空
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
}
# 爬取网页数据
resp = requests.get(url, headers=headers)
page_content = resp.text
# 定义爬取所需要的内容正则表达式
content = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)</span>'
r'.*?<br>(?P<year>.*?) '
r'.*?<span class="rating_num" property="v:average">(?P<rate>.*?)</span>'
r'.*?<span>(?P<pj>.*?)</span>'
r'.*?<span class="inq">(?P<ys>.*?)</span>', re.S)
# 查找指定内容
cont = content.finditer(page_content)
# 文件写入
f = open('data.csv', 'w')
csvwrite = csv.writer(f)
# 迭代器循环数据写入到文件中
for i in cont:
dict = i.groupdict()
dict['year'] = dict['year'].strip() #删除前面的空格
print(dict)
csvwrite.writerow(dict.values())
# 关闭文件的写入操作
f.close()
输出结果
C:\Programs\Python\vis\Scripts\python.exe D:/pythonTest/test01/爬取豆瓣电影top250.py
{'name': '肖申克的救赎', 'year': '1994', 'rate': '9.7', 'pj': '2654433人评价', 'ys': '希望让人自由。'}
{'name': '霸王别姬', 'year': '1993', 'rate': '9.6', 'pj': '1970896人评价', 'ys': '风华绝代。'}
{'name': '阿甘正传', 'year': '1994', 'rate': '9.5', 'pj': '1994649人评价', 'ys': '一部美国近现代史。'}
{'name': '泰坦尼克号', 'year': '1997', 'rate': '9.4', 'pj': '1954493人评价', 'ys': '失去的才是永恒的。 '}
{'name': '这个杀手不太冷', 'year': '1994', 'rate': '9.4', 'pj': '2142289人评价', 'ys': '怪蜀黍和小萝莉不得不说的故事。'}
{'name': '美丽人生', 'year': '1997', 'rate': '9.6', 'pj': '1225434人评价', 'ys': '最美的谎言。'}
{'name': '千与千寻', 'year': '2001', 'rate': '9.4', 'pj': '2070750人评价', 'ys': '最好的宫崎骏,最好的久石让。 '}
{'name': '辛德勒的名单', 'year': '1993', 'rate': '9.6', 'pj': '1022200人评价', 'ys': '拯救一个人,就是拯救整个世界。'}
{'name': '盗梦空间', 'year': '2010', 'rate': '9.4', 'pj': '1910066人评价', 'ys': '诺兰给了我们一场无法盗取的梦。'}
{'name': '星际穿越', 'year': '2014', 'rate': '9.4', 'pj': '1606621人评价', 'ys': '爱是一种力量,让我们超越时空感知它的存在。'}
{'name': '忠犬八公的故事', 'year': '2009', 'rate': '9.4', 'pj': '1305141人评价', 'ys': '永远都不能忘记你所爱的人。'}
{'name': '楚门的世界', 'year': '1998', 'rate': '9.3', 'pj': '1527937人评价', 'ys': '如果再也不能见到你,祝你早安,午安,晚安。'}
{'name': '海上钢琴师', 'year': '1998', 'rate': '9.3', 'pj': '1554735人评价', 'ys': '每个人都要走一条自己坚定了的路,就算是粉身碎骨。 '}
{'name': '三傻大闹宝莱坞', 'year': '2009', 'rate': '9.2', 'pj': '1731618人评价', 'ys': '英俊版憨豆,高情商版谢耳朵。'}
{'name': '机器人总动员', 'year': '2008', 'rate': '9.3', 'pj': '1223489人评价', 'ys': '小瓦力,大人生。'}
{'name': '放牛班的春天', 'year': '2004', 'rate': '9.3', 'pj': '1207921人评价', 'ys': '天籁一般的童声,是最接近上帝的存在。 '}
{'name': '无间道', 'year': '2002', 'rate': '9.3', 'pj': '1232439人评价', 'ys': '香港电影史上永不过时的杰作。'}
{'name': '疯狂动物城', 'year': '2016', 'rate': '9.2', 'pj': '1750526人评价', 'ys': '迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。'}
{'name': '大话西游之大圣娶亲', 'year': '1995', 'rate': '9.2', 'pj': '1418657人评价', 'ys': '一生所爱。'}
{'name': '熔炉', 'year': '2011', 'rate': '9.3', 'pj': '863966人评价', 'ys': '我们一路奋战不是为了改变世界,而是为了不让世界改变我们。'}
{'name': '控方证人', 'year': '1957', 'rate': '9.6', 'pj': '474664人评价', 'ys': '比利·怀德满分作品。'}
{'name': '教父', 'year': '1972', 'rate': '9.3', 'pj': '882431人评价', 'ys': '千万不要记恨你的对手,这样会让你失去理智。'}
{'name': '当幸福来敲门', 'year': '2006', 'rate': '9.2', 'pj': '1408572人评价', 'ys': '平民励志片。 '}
{'name': '触不可及', 'year': '2011', 'rate': '9.3', 'pj': '992500人评价', 'ys': '满满温情的高雅喜剧。'}
{'name': '怦然心动', 'year': '2010', 'rate': '9.1', 'pj': '1690975人评价', 'ys': '真正的幸福是来自内心深处。'}
Process finished with exit code 0
免费源码获得:关注微信公众号:ancenok,然后回复:021