python使用re模块爬取豆瓣Top250电影


Posted in Python onOctober 20, 2020

爬?四步原理:

1.发送请求:requests

2.获取相应数据:对方及其直接返回

3.解析并提取想要的数据:re

4.保存提取后的数据:with open()文件处理

爬?三步曲:

1.发送请求

2.解析数据

3.保存数据

注意:豆瓣网页爬虫必须使用请求头,否则服务器不予返回数据

import re
import requests

# 爬?三部曲:
# 1.获取请求
def get_data(url, headers):
  response = requests.get(url, headers=headers)
  # 如果爬取的是html文本就是用.text方法获取文本数据,如果爬取的是音视频就用.content方法获取二进制流数据
  # print(response.text)  # 获取相应文本,比如html代码
  return response.text

# 2.解析数据
def parser_data(text):
  # re.findall("正则表达式", "过滤的文本", re.S) # 匹配模式:re.S 全局模式
  data = re.findall(
    '<div class="item">.*?<a href="(.*?)" rel="external nofollow" >.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>', text, re.S)
  for move_info in data:
    yield move_info

# 3.保存数据
def save_data(res_list_iter):
  with open("豆瓣TOP250.txt", "a", encoding="utf-8") as f:
    for i in res_list_iter:
      move_page, move_title, move_score, move_evaluation = i
      # print(move_page, move_title, move_score, move_evaluation)
      str1 = f"电影名字:《{move_title}》  电影评分:{move_score}  电影评价:{move_evaluation}  电影详情页:{move_page}\n"
      f.write(str1)

# 使用请求头请求数据
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 \
  Safari/537.36'
}
n = 0
# 获取10个链接
for i in range(10):
  url = f"https://movie.douban.com/top250?start={n}&filter=="
  n += 25
  text = get_data(url, headers)
  res_list_iter = parser_data(text)
  save_data(res_list_iter)

执行结果:

python使用re模块爬取豆瓣Top250电影

以上就是python使用re模块爬取豆瓣Top250电影的详细内容,更多关于python 爬取豆瓣电影的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
Python实现批量转换文件编码的方法
Jul 28 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
利用Python实现原创工具的Logo与Help
Dec 03 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python实现自动装机功能案例分析
Oct 22 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 #Python
Python 制作查询商品历史价格的小工具
Oct 20 #Python
python实现扫雷游戏的示例
Oct 20 #Python
python3排序的实例方法
Oct 20 #Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 #Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 #Python
django使用channels实现通信的示例
Oct 19 #Python
You might like
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
php仿ZOL分页类代码
2008/10/02 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
动态加载iframe
2006/06/16 Javascript
初学JavaScript第二章
2008/09/30 Javascript
基于jquery的tab切换 js原理
2010/04/01 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
python数据抓取3种方法总结
2021/02/07 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
红旗团支部事迹材料
2014/01/27 职场文书
记帐员岗位责任制
2014/02/08 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
收银员岗位职责
2015/02/03 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技