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学习站

相关文章
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
702 6
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1595 31
|
11月前
|
数据采集 Web App开发 iOS开发
解决Python爬虫访问HTTPS资源时Cookie超时问题
解决Python爬虫访问HTTPS资源时Cookie超时问题
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
Web App开发 数据采集 前端开发
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
|
数据采集 XML 存储
Headers池技术在Python爬虫反反爬中的应用
Headers池技术在Python爬虫反反爬中的应用
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
405 3
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
747 4

推荐镜像

更多