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 相关文章推荐
Python生成随机数的方法
Jan 14 Python
python实现进程间通信简单实例
Jul 23 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
浅谈python中的占位符
Nov 09 Python
python通过zabbix api获取主机
Sep 17 Python
python的time模块和datetime模块实例解析
Nov 29 Python
Python列表倒序输出及其效率详解
Mar 04 Python
在pycharm中创建django项目的示例代码
May 28 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
Python软件包安装的三种常见方法
Jul 07 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工厂模式的好处
2013/06/18 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
VueJS实现用户管理系统
2020/05/29 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
Python中类的继承代码实例
2014/10/28 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python 整数越界问题详解
2019/06/27 Python
python中bytes和str类型的区别
2019/10/21 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
教师网络培训感言
2014/03/09 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
烟台的海导游词
2015/02/02 职场文书
人民币符号
2022/02/17 杂记
简单聊聊Golang中defer预计算参数
2022/03/25 Golang