通过正则表达式python爬取指定网页中的参数内容,保存到指定数据文件中

Posted weixin_ancenhw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过正则表达式python爬取指定网页中的参数内容,保存到指定数据文件中相关的知识,希望对你有一定的参考价值。

通过爬取网页中电影数据。根据指定内容获取该电影中的名称、评价、年份及部分内容,该功能需要导入python中的requests请求、正则表达式re,CSV文件类型。

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>.*?)&nbsp'
                     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

以上是关于通过正则表达式python爬取指定网页中的参数内容,保存到指定数据文件中的主要内容,如果未能解决你的问题,请参考以下文章

常用正则表达式爬取网页信息及HTML分析总结

python 爬取指定网页中的图片(python crawls the image in the specified page)

Python如何简单爬取腾讯新闻网前五页文字内容?

python指定查找html中某个div标签的值

使用webdriver+urllib爬取网页数据

正则表达式