Python 爬虫 AJAX 数据爬取和 HTTPS 访问| 学习笔记

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 快速学习 Python 爬虫 AJAX 数据爬取和 HTTPS 访问

开发者学堂课程【Python爬虫实战Python  爬虫  AJAX  数据爬取和  HTTPS  访问】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/555/detail/7643


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


内容简介

1.概述

2.爬虫分类

3.举例操作


一、概述

爬虫,应该称为网络爬虫,也叫网页蜘蛛。网络机器人、网络蚂蚁等

搜索引擎,也就叫做网络爬虫的应用者。

为什么今天,反而这词次被频繁提起?由搜索引擎不够吗

实际上,大数据时代到了,所有的企业都希望通过海量的数据发现其

中的价值。

所以,需要爬取对特定网站、特定类别的数据,二搜索引擎不能提供

这样的功能,因此,自己需要开发爬虫来解决。


二、爬虫分类

1、通用爬虫

常见的就是搜索引擎,无差别的收集数据、存储关键词,构建索引库,

给用户提供搜索接口

爬取的一般过程

(1)、初始一批 URL  ,将这些  URL  放到待爬取队列

(2)、从队列取出这些  URL,将这些  URL,通过 DNS 解析 IP 对

应的站点下载 HTML 页面,保存到本地服务器中,爬取完的 URL  放

到已爬取队列

(3)、分析这些网页内容,找出网页里面的其他关心的URL连接,

继续执行第二步,直到爬取条件结束

搜索引擎如何获取一个新网站的 URL

新网站主动提交给搜索引擎

通过其它网站页面中设置的外链

通过其他网站设置的外链

搜索引擎和 DNS 服务商合作

2、聚焦爬虫

有针对性的编写特定领域数据的采集的爬虫,是面向主题的爬虫

Robots 协议

只一个 robot.txt 文件,告诉爬虫引擎什么可以爬取

淘宝

其它爬虫,不允许起取  User-Agent:

*Disallow./

这是一个君子协定,能亦有道这个协议为了让搜素引擎更有效率搜索

自己内容,提供了如 Sitemap 这样的文件。这个文件禁止抓取的往往

又是可能我们感兴题的内容,它反而泄露了这些地址。

3、HTTP  请求和响应处理

其实爬取网页就是通过 HTTP  协议访问网页,不过通过浏览器访问往

往是人的行为,把这种行为变成使用程序来访问。

urllib 包

Urllib  是标准库,它一个工具包模块,包含下面模块来处理 url :

·urllib.request  用于打开和读写

url·urllib.error  包含了由  urllib.request  引起的异常

·urllib.parse 用于解析 url

4、urllib.requet  模块

模块定义了在基本和摘要式身份验证、重定向、cookies  等应用中

打开  Url(主要是HTTP)的函数和类。

urlopen  方法

urlopen(ur1,data=None)url  是链接地址字符串,或请求对象。

data

提交的数据,如果 data 为 None  发起 GET 请求,否则发起 POST 请

求。

见  urllib.request.Request#get_method 返回  http.client.

HTTPResponse  类的响应对象,这是一个类文件对象。

代码如下

#下面的链接访问后会有跳转

response=urlopen('http://www.bing.com')#GET方法print

(response.closed)withresponse:

print(1,type(response))#http.client.HTTPResponse类文件对象

print(2,response.status,response.reason)#状态

print(3,response.getur1())#返回真正的URLprint

(4,response.info())#headersprint(5,response.read())#

读取返回的内容

print(response.closed)

上例,通过   urllib.request.urlopen 方法,发起一个 HTTP  的  GET

请求,WEB 服务器返回了网页内容。响应的数据被封装到类文件对

象中,可以通过 read  方法、readline  方法、readlines  方法获

取数据,status  和 reason 属性表示返回的状态码,info 方法返

回头信息,等等。

4、User-Agent  问题

上例的代码非常精简,即可以获得网站的响应数据。urlopen  方法

只能传递  url 和 data  这样的数据,不能构造  HTTP  的请求。例如

useragent.  源码中构造的  useragent  如下

#urllib.request.OpenerDirectorclassOpenerDirector:

Classdef_init_(self):

client_version=“Python-urllib/%s"%_version_self.addheaders

=[('User-agent'client_version)]R

当前显示为  Python-url1ib/3.6

有些网站是反爬虫的,所以要把爬虫伪装成浏览器。随便打开一个浏

览器,复制浏览器的  UA  值,用来伪装。

5、Request  类

Request(ur1,data=None,headers={})

初始化方法,构造一个请求

对象。可添加一个  header  的字典。data  参数决定是 GET  还是  POST

请求。add_header(key,val)  为  header  中增加一个键值对。

6、Urllib.parse  模块

该模块可以完成对  url 的编解码

先看一行代码,进行编码

从运行结果来看,冒号、斜杠、&、等号、问号等字符全部被编码

了,%实际是单字节十六进制表示的值。一般来说,url  中的地址部

分,一般不需要使用中文路劲,但是参数部分,不管是  GET  还是  POST

方法,提交的数据中可以有斜杠、,这样这些字符表示问号等符号,

而不是元字符。为了安全,一般会将一部分数据做URL处理,即不会

有太大的歧义。后来也可作代码,也可传送中文,一般按照字符集的

encoding  要求转变为十六进制字符串前加百分号即可。

7、post  网站

8、处理  Json  数据

查看“豆瓣电影”。寻找最近热门


三、发起  UCL

通过分析,我们知道这部分内容,是通过  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

务器返回的  Json 数据如下"

HTTPS  证书忽略

HTTPS  使用  SSL  安全套接层协议,在传输层对网络数据进行加密。

HTTPS  使用的时候需要证书,而证书需要  CA  认证。

CA(CertificateAuthority)  是数字证书认证中心的简称,是指发放、

管理、废除数字证书的机构。CA  是受信任的第三方,有 CA 签发的证

书具有可信性。如果用户由于信任了  CA  签发的证书导致的损失,可

以追究  CA  的法律责任。CA  是层级结构,下级  CA  信任上级  CA, 且有上

级 CA  颁发给下级 CA 证书并认证。

一些网站,例如淘宝,使用 HTTPS  加密数据更加安全。

爬虫成功

通过 HTTPS  访问 12306的时候,失败的原因在于12306的证书未通过

CA认证,它是自己生成的证书,不可信。而其它网站访问,如

https://ww.baidu.com/并没有提示的原因,它的证书的发行者受信

任,且早就存储在当前系统。

相关文章
|
14天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
123 0
|
12天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
25天前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
41 3
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
27 1
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
64 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
47 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图