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 相关文章推荐
MySQL最常见的操作语句小结
May 07 Python
Python语言描述最大连续子序列和
Dec 05 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
flask框架中勾子函数的使用详解
Aug 01 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
python实现Flappy Bird源码
Dec 24 Python
python语言基本语句用法总结
Jun 11 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
Python装饰器结合递归原理解析
Jul 02 Python
Selenium 配置启动项参数的方法
Dec 04 Python
Python内置数据类型中的集合详解
Mar 18 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实现货币换算的方法
2014/11/29 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
总结js函数相关知识点
2018/02/27 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
python动态监控日志内容的示例
2014/02/16 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python 查看文件的读写权限方法
2018/01/23 Python
详解Python3的TFTP文件传输
2018/06/26 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
python 实现超级玛丽游戏
2020/11/25 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
python中添加模块导入路径的方法
2021/02/03 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
护理专业毕业生推荐信
2013/10/31 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
公务员政审材料范文
2014/12/23 职场文书
学校学期工作总结
2015/08/13 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫