Python 爬虫 (一)前导知识

本文详细介绍了网络爬虫的基础知识,包括爬虫核心、爬虫进阶、数据存储、移动开发和反反爬技术。讲解了HTTP请求与响应、网络协议、端口、数据解析等关键概念,还涉及了Scrapy框架、多线程、Selenium、数据存储(CSV、Redis、MongoDB)以及反爬策略如代理IP和验证码识别。此外,提到了Python在爬虫领域的优势和不同类型的网络爬虫。爬虫的主要应用包括数据源提供、数据分析及AI人工智能等领域。
部署运行你感兴趣的模型镜像

爬虫要课程的内容

要学习2.5-3个月

爬虫核心

7-8个课时
爬虫的前导知识(端口、网络协议、网络请求与相应的整个流程、爬虫工具的介绍,概念的内容居多,基础不牢,地动山摇);
网络请求模块(内置的URL地址开始、第三方的requests、核心知识点);
数据解析(正则)

爬虫进阶

6-7个课时
selenium (web自动化测试工具,自动化爬虫)
静态网页:能够在对应的网页源码中看到,向一个网址的url地址发起请求,得到响应,通过响应就能拿到整个网页的数据,只需要解析网络源代码就可以了
动态网页:并不能从网页的源码中看到数据,如12306,利用ajax,实现增量的更新,不需要重新加载网页
多线程( 队列 生产者与消费者),伪多线程,锁的问题,程序在运行中提高效率

Scrapy爬虫框架

6-7个课时

数据存储

2-3个课时 csv redis(分布式爬虫:流程,普通的爬虫更改为分布式) mongodb

移动开发

4-5个课时
前导知识(mainacitivity) fiddler抓包工具 数据抓取

反反爬技术

3-4个课时
字体反爬 代理池 IP代理 各种复杂的验证码(行为验证码 简单验证码:tesseract)
js反爬(语法基础 加密算法 调试工具)

自学知识

看个人的精力、时间、能力
网络请求模板里,可以自学网络编程
多线程里自学多进程、协程、redis/mysql
移动开发里自学安卓基础(1.5月) js语法(1个月) 加密算法

爬虫的前导知识

端口

每一个应用程序都有自己独立的标识 这个标识我们称之为端口
单纯的从C盘复制到D盘,是单机版的操作
发送视频是联网版的操作。比如 打电话,1.找到联系人,2.拨号,3.通话
我们想要进行数据通讯分几步?

  1. 找到对方ip
  2. 数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做 端口。这里的端口 我们一般都叫做 ‘逻辑端口’,网线的端口为物理端口
  3. 定义通讯规则。这个通讯规则我们一般称之为协议

mysql 的端口是3306
mongodb 的端口是27017

通信协议

双方共同遵守的规则,发送视频时遵守的协议
比如结婚的时候签订的协议,玩游戏的时候来自不同地方的玩家可以无障碍的交流,所遵守是共同的协议或规则,所有玩家所接受到的数据都是被同一个游戏或应用程序解析
国际组织定义了通用的通信协议 TCP/IP协议
所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
HTTP又叫做超文本传输协议(是一种通信协议) HTTP 它的端口是 80
html 超文本标记语言 超文本(网页源代码html)
http传送的是html

网络模型

微信发送消息很快,但是在通信中经历了复杂的过程,数据的传送通过OSI参考模型,进行发送和接受数据,每一层负责不同的内容,各司其职(公司的流水线,负责生产,销售等等)
在这里插入图片描述
视频数据传输是数据封包的过程,在应用层进行封装,加上应用层的特征,往下到达表示层,一直往下每层增加一个表现形式,然后到对方IP后逐层进行数据拆包,到对方应用层后找到应用程序对应的端口号进行数据发送。
后期更新了新的参考模型 TCP/IP参考模型
在这里插入图片描述
HTTP在应用层
https = http + ssl 是以安全为目标的http, 通道 443;https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的,即HTTP下加入SSL层,HTTPS的安全基础是SSL

  • http的安全版本 ssl是用于web的安全传输协议
  • http和ssl是在应用层的
    在这里插入图片描述

HTTP的请求和响应(重点)

HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息
在这里插入图片描述
客户端(手机或者电脑),向服务器发起请求,服务器返回结果给客户端。
比如百度搜索猪猪侠,在百度的搜索界面,右击鼠标,选择检查,就会打开开发者工具,点击Network,客户端跟浏览器交互的记录都在这里面,选择ALL,第一个文件
1.当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
2.当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
3.浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
4.当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

客户端的Http请求

右击鼠标–>检查–>Network–>All,第一个文件
URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:
请求行、请求头部、空行、请求数据
四个部分组成,下图给出了请求报文的一般格式。
在这里插入图片描述

抓包工具

在这里插入图片描述
Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
Console : 控制台 (打印信息)
Sources : 信息来源 (整个网站加载的文件)
NetWork : 网络工作(信息抓包) 能够看到很多的网页请求

General 全部的

  • Request URL 请求的地址,跟浏览器的代码一样,就是搜索的内容变为了转码
  • Request Method 请求的方式(get post 一般我们看到的是啥请求方式就用啥请求方式 但有时也要具体情况具体分析)
  • GET : 查询参数都会在URL上显示出来,一般只从服务器上获取数据,并没有对服务器产生影响。
  • POST : 需要登录的网页都是。查询参数和需要提交数据是隐藏在Form表单里的,不会在URL地址上显示出来,加密的内容不给别人看,post可以操作,让服务器的返回值发生变化(对服务器产生影响),输入账号密码到服务器去验证,但是所有的请求并不一定都显示在url地址中(有道笔记),输入的参数都必须传送至服务器,但不一定出现url地址中。
  • Status Code 状态码
    静态加载的页面 数据都在网页源码中
    动态加载的页面 Requests URL(目标url)是需要去network中分析数据包才能找到的 response看响应的结果
    200 : 请求成功
    301 : 永久重定向
    302 : 临时重定向
    404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
    500 : 服务器内部请求

Request Headers 客户端请求头(重点)

headers请求头 = {
请求方式 目标url 版本(不加)
Host: www.baidu.com 域名 (可加可不加)
Connection: keep-alive 长连接 (1.0之前http的请求是短链接,每一次请求资源都要和服务器建立链接,传输完数据再断开),请求后不会关闭,下个请求可以继续用(不加)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 用户代理(操作系统、浏览器和浏览器版本号) 一般是反反爬的第一步 (加),带上这个后 是告诉服务器,是正常的用户,不会机器在爬虫。
Accept-Encoding: gzip, deflate ,br(不加 加了数据可能会出现问题)
Cookie:xxx 记录了服务器与用户的信息 (加不加看情况) 有效期一般有时间限制,用于反反爬
Referer:xxx 页面跳转 记录了当前页面是由哪个页面(url)过来的 (加不加看情况)
}

请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP 0.9:只有基本的文本 GET 功能。
HTTP 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP 1.1:在 1.0 基础上进行更新,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
HTTP 2.0(未普及):请求/响应首部的定义基本没有改变,只是所有首部键必须全部小写,而且请求行要独立为 :method、:scheme、:host、:path这些键值对。
在这里插入图片描述

Response Headers

看看就好

Query String Parameters

有url中的所有参数,以每行的形式显示出来

爬虫简介

  • 什么是爬虫?
    网络爬虫,网络蜘蛛,网络机器人代替人模拟浏览器去访问和获取互联网上信息的一个程序;自动抓取互联网信息的程序或者脚本

  • 为什么要爬虫呢?

    • 为其他程序提供数据源。人脸识别,在百度API上有接口,人脸数据需要提前录入进去;百度是大型的爬虫,搜索的关键字都是在百度的服务器上
    • 数据分析。二手房网站,爬取数据后分析建模,预测出二手房的价格;抖音快手根据你在某个视频停留的时间度,来推荐你需要的视频
    • AI人工智能。对各项技能要求比较高(python技术,数学,高数,概率论)好多岗位的消失,售票员
  • 企业获取数据的方式?

    • 公司自己有的数据
    • 第三方数据平台
      • 免费的大数据平台
      • 付费的大数据平台
      • 爬虫爬取的数据 爬虫开发者
  • python做爬虫的优势
    ​PHP : 对多线程、异步支持不太好
    Java : 代码量大,代码笨重
    C/C++ : 代码量大,难以编写
    Python : 支持模块多、代码简介、开发效率高 (scrapy框架),伪多线程,代码量就变多了,锁的问题

  • 爬虫的分类

    • 通用网络爬虫 各大搜索引擎 eg.百度 谷歌
    • 聚焦网络爬虫 到互联网上有选择有目的的去抓取特定的目标和相关主题内容
    • 其他的:增量式、深层网络爬虫(不需要了解)

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值