python爬虫AJAX数据爬取和HTTPS访问 | python爬虫实战之四

简介: 本节介绍了通过“豆瓣电影”来进行了json数据的处理,另外说明了HTTPS访问需要获得CA证书。使用HTTPS加密数据更加安全。

python爬虫URL编码和GETPOST请求 | python爬虫实战之三

python爬虫AJAX数据爬取和HTTPS访问

我们首先需要对之前所接触的爬虫的概念,爬取流程、爬虫标准库等内容做一个回顾。
通常我们在大多数情况下编写的爬虫都为聚焦爬虫。
接下来我们通过豆瓣电影来处理JSON数据。

处理JSON数据

查看“豆瓣电影”,看到”最近热门电影”的“热门”。

image.png

右键“审查元素”,找到“Network”,刷新一下。

image.png
image.png

我们可以看到很多的内容,我们针对热门电影这一部分进行分析。

image.png

然后复制地址进行操作分析。

通过分析, 我们知道这部分内容, 是通过AJAX从后台拿到的Json数据。
访问的URL是https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&page_limit=50&page_start=0
其中%E7%83%AD%E9%97%A8是utf-8编码的中文“热门”
服务器返回的JSON数据如下:

image.png

轮播组件,共需要50条数据。
其中url的表示如下:
tag标签”热门”,表示热门电影
type数据类型, movie是电影
page_limit表示返回数据的总数
page_start表示数据偏移

我们可以设置page_limit=10&page_start=10的值。

from urllib.parse import urlencode
from urllib.request import urlopen, Request
import simplejson

ua = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"

jurl = 'https://movie.douban.com/j/search_subjects'

d = {
    'type':'movie',
    'tag':'热门',
    'page_limit':10,
    'page_start':10
}

req = Request('{}?{}'.format(jurl, urlencode(d)), headers={
    'User-agent':ua
})

with urlopen(req) as res:
    subjects = simplejson.loads(res.read())
    print(len(subjects['subjects']))
    print(subjects)

执行结果:

image.png

此时就可以获取到内容了,那么我们有必要将爬虫封装吗?
因为每个企业处理的方式可能会不太一样,返回的数据有可能是html,也有可能是JSON。所以说处理的方式必须一致,或者把函数封装在一个方法中才是我们需要思考的重点。往往我们会为一些特定数据、特定网站写一个特定的爬虫。因为,每一个网站的分析和提取方式可能是不一样的。现在我们只是简单做了一个JSON的处理。但如果是网页解析,则是会非常麻烦的,尤其是网页一旦更换网页模板,我们则需要重新去写网页的解析方式。

HTTPS证书忽略

HTTPS使用SSL安全套接层协议, 在传输层对网络数据进行加密。HTTPS使用的时候需要证书, 而证书需要CA认证。
CA(Certificate Authority) 是数字证书认证中心的简称, 是指发放、管理、废除数字证书的机构。
CA是受信任的第三方,有CA签发的证书具有可信性。如果用户由于信任了CA签发的证书导致的损失,可以追究CA的法律责任。
CA是层级结构,下级CA信任上级CA,且有上级CA颁发给下级CA证书并认证。
一些网站, 例如淘宝, 使用HTTPS加密数据更加安全。
我们来进行对一个网站的爬取:

image.png

执行结果:

image.png
image.png

我们去尝试访问百度,是否可以呢?
修改代码:

image.png

执行结果:

image.png

通过HTTPS访问12306的时候, 失败的原因在于12306的证书未通过CA认证, 它是自己生成的证书, 不可信。而其它网站访问,如https://www.baidu.com/ 并没有提示的原因,它的证书的发行者受信任,且早就存储在当前系统中。

能否像浏览器一样,忽略证书不安全信息呢?
导入ssl模块:

image.png

执行结果:

image.png

这样,我们就可以通过这样的方式去访问类似的网站了。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
1253 7
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
存储 分布式计算 测试技术
Python学习之旅:从基础到实战第三章
总体来说,第三章是Python学习路程中的一个重要里程碑,它不仅加深了对基础概念的理解,还引入了更多高级特性,为后续的深入学习和实际应用打下坚实的基础。通过这一章的学习,读者应该能够更好地理解Python编程的核心概念,并准备好应对更复杂的编程挑战。
323 12
|
存储 数据采集 监控
Python文件操作全攻略:从基础到高级实战
本文系统讲解Python文件操作核心技巧,涵盖基础读写、指针控制、异常处理及大文件分块处理等实战场景。结合日志分析、CSV清洗等案例,助你高效掌握文本与二进制文件处理,提升程序健壮性与开发效率。(238字)
847 1
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1870 1
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
1029 0
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
1013 0
N..
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
327 1
|
XML 前端开发 JavaScript
jQuery中ajax如何使用
jQuery中ajax如何使用
389 0
|
前端开发 JavaScript
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
370 0
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]

推荐镜像

更多