python爬取豆瓣短评_爬虫-爬取豆瓣短评
爬虫-爬取豆瓣短评
啥是爬虫?
按照一定的规则,自动地抓取互联网信息的程序。
为啥要用爬虫?
可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索
怎么用爬虫?
爬虫分为三个部分
1、解析网页
2、提取信息
3、保存信息
接下来将会用requests库来实现一个简单地爬虫
爬取豆瓣短评
首先我们需要安装requests库
我们可以cmd指令进入python解释器,然后输入pip install requests然后等待安装。
同样我们也可以打开pycharm在Terminal中输入相同的指令
安装比较慢的同学可以修改下载源也可以下载
链接:解决pip下载慢
提取码:9b7d
来解决
安装好了我们就可以来使用requests库的功能了
首先我们访问豆瓣250选择自己感兴趣的电影这里我们选择了《肖申克的救赎》
打开全部短评
这样我们就得到了短评的链接我们先看第二页
https://movie.douban.com/subject/1292052/commentsstart=20&limit=20&sort=new_score&status=P
一、请求网页
拿到网址后我们就可以利用requests库的get方法来请求网页
url = "https://movie.douban.com/subject/1292052/comments?start=20&limit=20&sort=new_score&status=P"
response = requests.get(url)
print(response)
但是这样我们是访问不到的,因为站点知道了我们不是“正常人”。我们的应对方案就是尽可能的模拟浏览器的功能或行为。既然浏览器有请求头的发送,那么我们的程序自然也应该加上。这时候我们就要用到get中的请求头功能了。
headers = {'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40'}
# user-Agent 可以自己设置也可以自己去网页network中查找
我们尝试再次访问
response = requests.get(url, headers=headers)
print(response, type(response))
----------------------
请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它:如果你改变了编码,每当你访问 response.text,Request 都将会使用 response.encoding 的新值。HTML 页面是可以设置编码信息的,可以查看该编码信息,然后设置 response.encoding 为相应的编码。这样就能使用正确的编码解析 response.text 了。而网页的编码可以在浏览器中去查看。
print(response.text) # 网页源码
print(response.encoding) # utf-8
我们得到了网页源码response.text那么我们就可以进行下一步我们先将第一步包装成函数
def getHtml(url):
response = requests.get(url, headers=headers)
htmldata = response.text
return htmldata
二、解析网页
我们得到了文本(text)模式的网页源码,那么我们就可以用正则表达式来解析它来提取我们要的数据
import re模块在这里我们主要用四个内容
.
匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。
*
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。
?
匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。
( )
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
简单来说.*?就是匹配任意数量任意类型的字符()就是问匹配到了吗?匹配到了就取出来…
在这里我们要选取的是短评在网页中他的一个代码格式是这样子的
关于希望最强有力的注释。这是其中一条评论,他在span标签下两个> <之间,注意我们要匹配的一定是唯一的,不然会匹配到别的内容
comment = re.findall('(.*?)', htmldata) # findall查找全文
# 看网页源码我们看到评论都在这个格式里 所以findall能够全部匹配
同样我们也可以用正则得到名字
肖申克的救赎 短评
#
(.*?)
我们再用函数将第二步封装起来
# 提取信息 名字评论
def getComment(htmldata):
movies_name = re.findall('
(.*?)
', htmldata)
comment = re.findall('(.*?)', htmldata)
return movies_name,comment
三、保存数据
这个比较简单了
def save():
with open(f"{str(movies_name)}.txt", "a", encoding="utf-8")as f:
f.write("%s\n" % str(comment))
当然你也可以保存成别的格式
总结:
简单地一个爬虫程序就编好了
再来回答一下为什么取第二页,我们来对比下其他页
https://movie.douban.com/subject/1292052/comments?start=0&limit=20&sort=new_score&status=P # 第一页
https://movie.douban.com/subject/1292052/comments?start=20&limit=20&sort=new_score&status=P # 第二页
https://movie.douban.com/subject/1292052/comments?start=40&limit=20&sort=new_score&status=P # 第三页
我们发现他只是 start 那里数据不一样 那我们可以通过修改 数值来爬取多页吗?
完整代码奉上
import requests
import re
# 获取网页源码
def getHtml(url):
response = requests.get(url, headers=headers)
htmldata = response.text
return htmldata
# 提取信息 名字评论
def getComment(htmldata):
movies_name = re.findall('
(.*?)
', htmldata)
comment = re.findall('(.*?)', htmldata)
return movies_name, comment
# 保存文件
def save():
with open(f"{str(movies_name)}.txt", "a", encoding="utf-8")as f:
f.write("%s\n" % str(comment))
headers = {
'User-Agent1':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40'
}
for i in range(0, 10):
movie_url = f"https://movie.douban.com/subject/1292052/comments?start={i * 20}&limit=20&sort=new_score&status=P"
htmldata = getHtml(movie_url)
movies_name, comment = getComment(htmldata)
save()
这样我们就得到了前十页的数据了
本文地址:https://blog.csdn.net/A1L__/article/details/107572276
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
python爬取豆瓣短评_爬虫-爬取豆瓣短评相关推荐
- python爬取分页数据_爬虫抓取分页数据的简单实现
昨天,我们已经利用Jsoup技术实现了一个简单的爬虫,原理很简单,主要是要先分析页面,拿到条件,然后就去匹配url,采用dome解析的方式循环抓取我们需要的数据,从而即可轻松实现一个简单的爬虫.那么, ...
- python爬取二级页面_爬虫代码改进(二)|多页抓取与二级页面
本文是下面两篇文章的续篇 本系列包括如下内容抓取豆瓣top250一页多个字段 整合成列表 存储为json文件 定义成函数形式 多页抓取之构造url 多页抓取之翻页 抓取二级页面数据 通过生成器优化代码 ...
- python批量下载静态页面_爬虫实战之,爬取壁纸,批量下载
一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按 ...
- python爬去百度图片_爬虫篇| 爬取百度图片(一)
什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...
- java爬取网易云歌单_爬虫爬取网易云歌单
一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取网易云音乐歌单 2.主题式网络爬虫爬取的内容与数据特征分析 爬取网易云音乐歌单前十页歌单,轻音乐类型的歌单名称.歌单播放量.歌单链接.用户名称. ...
- python爬取学校新闻_python爬虫爬取新闻的简单实现
我们通常是使用爬虫爬取网站信息,其实网络爬虫是一种应用于搜索引擎的程序.使用python爬虫可以将一个网站的所有内容与链接进行阅读.例如我们每日都要获取新闻信息,利用python爬虫就可以帮助我们爬取 ...
- python爬取bilibili弹幕_Python爬虫爬取Bilibili弹幕过程解析
先来思考一个问题,B站一个视频的弹幕最多会有多少? 比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的. 也就是说,有一个视频地址为https://www.bilibi ...
- python爬图代码实例_Python爬虫爬取煎蛋网图片代码实例
这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...
- python爬取微博文本_Python爬虫爬取新浪微博内容示例【基于代理IP】
本文实例讲述了Python爬虫爬取新浪微博内容.分享给大家供大家参考,具体如下: 用Python编写爬虫,爬取微博大V的微博内容,本文以女神的微博为例(爬新浪m站:https://m.weibo.cn ...
最新文章
- ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
- python建立列表_python创建列表和向列表添加元素的实现方法
- 蓄水池采样(Reservoir Sampling)
- node js 技术架构_[视频] Node JS中的干净架构
- InfluxDB、grafana、collect部署监控(centos6.8)
- c语言实验集成环境软件,TurboC for Windows集成实验与学习环境
- Android四大组件(activity task stack)
- 融云首席科学家任杰:写在融云 8 周年
- matlab三踪示波器,3.2 示波器CSV数据导入MATLAB
- autojs之语音识别
- hosts文件为空,仍然显示ERR_CONNECTION_RESET的解决方法(hosts.ics)
- 真假屏幕测试软件,如何检测4K电视屏幕的真伪,漏出死像素?一键识别两种工具!...
- 跨站脚本攻击漏洞(XSS):基础知识和防御策略
- PS|002自制夸张表情包
- 从零开始的博客建站之旅——搭建
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
- 苹果发布代表全球各地的 22 个国家的Apple Watch表带和表盘
- jenkins构建触发器设置(定时任务)
- BUUCTF 梅花香自苦寒来
- LayUI表格在线编辑动态修改列数据
热门文章
- 公众号jdk 获取手机号_公众号免费留言/评论功能获取步骤
- 嘿,兄弟!移动端调试工具Flipper了解一下(下)
- Docker的安装及使用
- Android学习笔记 二三 多页显示 Flipper的使用
- 百度云BCC服务器CentOS7.5 Nginx配置https
- 7天物联网智能家居实战-DAY1
- EOS Platform 7.6.6部署在PAS6.5,governor里部署ecd和epd,失败:com.primeton.system.impl.exception.ContributionDep
- 强烈推荐一波高质量的公众号,全是圈内大佬!
- 视频+白皮书 | Kyligence 与 Kylin 功能差异详解
- 与element ui结合省市区三级联动