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 相关文章推荐
Python3.2中Print函数用法实例详解
May 19 Python
python中__call__内置函数用法实例
Jun 04 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
python之生成多层json结构的实现
Feb 27 Python
Python如何对XML 解析
Jun 28 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
python 获取计算机的网卡信息
Feb 18 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
php析构函数的简单使用说明
2015/08/24 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python中enumerate函数用法实例分析
2015/05/20 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
中专毕业生的自我鉴定
2013/12/01 职场文书
大学生学业生涯规划
2014/01/05 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
大学生读书笔记范文
2015/07/01 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python