DC学院爬虫学习笔记(三):使用Requests爬取豆瓣短评

简介: 使用Requests爬取豆瓣短评

Requests库介绍:

Requests库官方的介绍有这么一句话:Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
这句话直接并霸气地宣示了Requests库是python最好的一个HTTP库。

Requests的简单用法

Requests库的七个主要方法

image

Requests.get的用法:

import requests  #导入Requests库
r = requests.get(url) #使用get方法发送请求,返回包含网页数据的Response并存储到Response对象r中

Response对象的属性:

  • r.status_code:http请求的返回状态,200表示连接成功(HTTP状态码)
  • r.text:返回对象的文本内容
  • r.content:猜测返回对象的二进制形式
  • r.encoding:分析返回对象的编码方式
  • r.apparent_encoding:响应内容编码方式(备选编码方式)

以知乎为例,展示上述代码的使用:

>>> import requests
>>> r = requests.get('https://www.zhihu.com/')
>>> r.status_code
500
>>> r.text   #省略
>>> r.content   #省略
>>> r.encoding
'ISO-8859-1'
>>> r.apparent_encoding
'ascii'

实战

分析豆瓣短评网页

首先通过浏览器工具来分析网页的加载方式。只有同步加载的数据才能直接在网页源代码中直接查看到,异步加载的数据直接查看网页源代码是看不到的。
image
把JavaScript由“允许”改为“阻止”,重新刷新页面,若网页正常加载,说明该网页的加载方式是同步加载,若网页没有正常加载,说明该网页的加载方式是异步加载。

使用Requests下载数据的步骤

  • 导入Requests库
  • 输入url
  • 使用get方法
  • 打印返回文本
  • 抛出异常
import requests #导入Requests库

url = ' https://book.douban.com/subject/27147922/?icn=index-editionrecommend' #输入url
r = requests.get(url,timeout=20) #使用get方法
##print(r.text) #打印返回文本
print(r.raise_for_status()) #抛出异常
None

爬取网页通用框架

  • 定义函数
  • 设置超时
  • 异常处理
  • 调用函数|
#定义函数
def getHTMLText(url):
    try:
        r = requests.get(url,timeout=20) #设置超时
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except: #异常处理
        return "产生异常"

if __name__ == '__main__':
    url = " "
    print(getHTMLText(url)) #调用函数

爬虫协议

什么是爬虫协议

爬虫协议,也被叫做robots协议,是为了告诉网络蜘蛛哪些页面可以抓取,哪些页面不能抓

如何查看爬虫协议

在访问网站域名后加上robots.txt即可,例如查看百度网站的爬虫协议:https://www.baidu.com/robots.txt

爬虫协议属性

拦截所有的机器人:
User-agent: *
Disallow: /

允许所有的机器人:
User-agent: *
Disallow:

爬虫建议

  • 爬取互联网公开数据
  • 尽量放慢你的速度
  • 尽量遵循robots协议
  • 不要用于商业用途
  • 不要公布爬虫程序与数据
目录
相关文章
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
123 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
105 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
205 0
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
163 0
爬虫识别-准备离线计算数据| 学习笔记
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
20天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
47 4
|
1月前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
65 2
|
1月前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
21天前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
21 3
|
22天前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
【7月更文挑战第29天】在广阔的网络世界里,Python以其简洁的语法和强大的库支持成为网络爬虫开发的首选。本文聚焦于两大网络请求库——urllib和requests。urllib是Python内置库,虽API稍显复杂,却有助于理解HTTP本质。示例代码展示了如何使用`urlopen`函数发起GET请求并读取网页内容。相比之下,requests库则更加人性化,极大地简化了HTTP请求流程,使开发者能更专注于业务逻辑。
26 1