python使用re模块爬取豆瓣Top250电影
作者:Gg、 发布时间:2023-10-11 17:28:38
标签:python,re,模块,爬取,豆瓣,电影
爬蟲四步原理:
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)
执行结果:
来源:https://www.cnblogs.com/jsxxd/p/13842360.html


猜你喜欢
- 一 导入 pymongofrom pymongo import MongoClient二 连接服务器 端口号 27017连接MongoDB连
- 以前用Ubuntu的时候感觉很简单的事到ContOS上却变得很头痛,在执行以下命令安装python-pip居然什么也没执行。yum inst
- 前言extends关键字在TS编程中出现的频率挺高的,而且不同场景下代表的含义不一样,特此总结一下:表示继承/拓展的含义表示约束的含义表示分
- 本文实例讲述了Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法。分享
- 有关修改提交(git commit)信息的方法可以参考: Git commit –amend 修改提交信息有时,在git push之后,才发
- 方法: 使用urlencode函数urllib.request.urlopen()import urllib.requestimport u
- 路由切换返回前一个路由时实现页面不刷新功能,首先想到的是keep-alive,但是页面不属于父子级关系,所以决定用beforeRouteLe
- 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。这个例子中被封装的dll文件可以隐藏access数据库的实际
- Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流
- Expression定义 IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javascript表达式关联起来,这
- 开始没想到,这10w的数据一个号码一个号码的插入半个小时才2w。后来改进一条SQL批量插入 -- 优化代码之前的 insert into t
- Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。
- 摘要:主要介绍一些python的文件读取功能,文件内容修改,文件名后缀更改等操作。批处理文件功能import ospath1 = '
- 函数的增益值torch.nn.init.calculate_gain(nonlinearity, param=None)提供了对非线性函数增
- 上一篇文章介绍了并发和多线程的概念,这次就来向大家上一个实战来讲解一下如何真正的运用上多线程这个概念。有需要的可以看看我之前这篇文章:Pyt
- 如果仅仅是定义表格的边框为1(border="1")和边框颜色值(如borderC
- 如何制作一个从Access数据库中读取记录的下拉菜单?看看这个例子:<% SQL = "SEL
- import timeimport paramikoclass HandleParamiko: '''
- 本文实例讲述了Python回文字符串及回文数字判定功能。分享给大家供大家参考,具体如下:所谓回文字符串,就是一个字符串,从左到右读和从右到左
- 微软的SQL Server 2005中用来替代数据传输服务(DTS)的SQL Server综合服务(SSIS),包含了很多工具用于导入数据并