爬虫 第一讲 爬虫前导知识、爬虫简介

爬虫 第一讲 爬虫前导知识、爬虫简介

一、爬虫前导知识

1.端口

1、打开命令窗口,输入命令:netstat -ano 查找所有运行的端口
在这里插入图片描述
2、查看被占用端口对应的 PID
输入命令:netstat -aon|findstr “3306”
回车执行该命令,最后一位数字就是 PID, 这里是 1968。

在这里插入图片描述
3、查看指定 PID 的进程
继续输入命令:tasklist|findstr “1968”
查看是哪个进程或者程序占用了 3306 端口,结果是:mysqld.exe。
在这里插入图片描述
4.结束进程
强制(/F参数)杀死 pid 为 1968 的所有进程包括子进程(/T参数):taskkill /T /F /PID 1968
在这里插入图片描述
数据通讯分几步?
1.找到对方ip
2.数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做 端口。这里的端口,我们一般都叫做 ‘逻辑端口’
3.定义通讯规则。这个通讯规则我们一般称之为协议

2.协议

  • 国际组织定义了通用的通信协议 TCP/IP协议
  • 所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
    HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
    Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
    Web服务器根据接收到的请求后,向客户端发送响应信息。
    HTTP默认端口号为80,但是你也可以改为8080或者其他端口
    HTTPS默认端口号为443

3.网络模型

1.osi参考模型

在这里插入图片描述

2.后期更新了新的参考模型 TCP/IP参考模型

在这里插入图片描述

3.HTTPS是什么呢?

• https=http+ssl,顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的
• https,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL
SSL怎么理解?
• SSL也是一个协议主要用于web的安全传输协议
在这里插入图片描述

4.Http请求与响应

HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息
在这里插入图片描述
在这里插入图片描述
Request URL:请求地址 https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1618643744108_R&pv=&ic=&nc=1&z=&hd=&latest=&copyright=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1618643744110%5E00_1349X150&sid=&word=%E7%86%8A%E7%8C%AB
Request Method: GET 请求方式
Status Code: 200 OK 状态码
Remote Address: 124.237.176.67:443 远端地址
Referrer Policy: strict-origin-when-cross-origin 推荐原则

Response Headers 服务器的响应
在这里插入图片描述

(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语法结构,完整的显示出来了。

5.客户端的Http请求

URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:
请求行、请求头部、空行、请求数据
四个部分组成,下图给出了请求报文的一般格式。
在这里插入图片描述
Requet Headers 客户端的请求
Host: image.baidu.com 域名
Connection: keep-alive 常链接
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 用户代理 反反爬的第一步
Accept:接收
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br 不加
Cookie:xxxx 缓存信息 记录用户相关的信息
http协议本身是无状态的,服务器无法判断用户的身份,cookie实际上就是一段文本信息(key-value格式)
Cookie时间限制 比较长 一般情况先别加
Referer: 表明当前的这个url地址是从哪里过来的 反反爬的技术
Query String Parameters 参数

一个典型的HTTP请求示例
Requet Headers view parsed

GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: same-origin
Referer: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=Python%20%20%E6%89%8B%E5%8A%A8%E5%9B%9E%E6%94%B6%E5%9E%83%E5%9C%BE&oq=Python%2520%25E6%2594%25B6%25E5%2588%25B0%25E5%259B%259E%25E6%2594%25B6%25E5%259E%2583%25E5%259C%25BE&rsv_pq=f5baabda0010c033&rsv_t=1323wLC5312ORKIcfWo4JroXu16WSW5HqZ183yRWRnjWHaeeseiUUPIDun4&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=2315&rsv_sug3=48&rsv_sug2=0&rsv_sug4=2736
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=4049831E3DB8DE890DFFCA6103FF02C1;
6.请求方法

根据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这些键值对。

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。

二、爬虫简介

1.爬虫是什么?

  • 一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。
  • 简单一句话,就是代替人去模拟浏览器进行网页操作

2.为什么需要爬虫?

  • 为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据、人工智能等

3.企业获取数据的方式?

  • 1.公司自有的数据
  • 2.第三方平台购买的数据 (百度指数、数据堂)
  • 3.程序员开发(爬虫爬取的数据)

4.Python 做爬虫的优势

  • PHP : 对多线程、异步支持不太好
  • Java : 代码量大,代码笨重
  • C/C++ : 代码量大,难以编写
  • Python : 支持模块多、代码简介、开发效率高 (scrapy框架)

5.爬虫的分类

  • 通用网络爬虫 例如 baidu google yahoo
  • 聚焦网络爬虫: 根据既定的目标有选择的抓取某一特定主题内容

1. GET和POST

  • GET : 查询参数都会在URL上显示出来
    get请求,一般情况下,只从服务器获取数据下来,并没有对服务器产生影响,它的请求参数都在这个url地址之上
  • POST : 查询参数和需要提交数据是隐藏在Form表单里的,不会在URL地址上显示出来
    post请求,向服务器发送数据(登录)、上传文件,它的参数不会出现在url地址之上

2.URL组成部分

  • URL: 统一资源定位符
  • https://new.qq.com/TWF20200/TWF2020032502924000.html
  • https: 协议
  • new.qq.com: 主机名可以将主机理解为一台名叫 news.qq.com 的机器。域名
  • port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
  • TWF20200/TWF2020032502924000.html 访问资源的路径
  • #anchor: 锚点用前端在做页面定位的
  • 注意 : 当浏览器中请求一个url,浏览器会对这个url进行一个编码,除了英文字母、数字、和部分符号之外,其他的全部使用百分号+十六进制进行编码
  • 例如 : https://www.baidu.com/s?wd=%E8%80%81%E5%B8%88
    https://www.baidu.com/s?wd=老师
    https://www.baidu.com/s?wd=python

3.User-Agent 用户代理

  • 作用:记录用户的浏览器、操作系统等,为了让用户更好的获取HTML页面效果

User-Agent:
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Mozilla Firefox:(Gecko内核)

示例

import requests
url = 'https://www.baidu.com/'
response = requests.get(url)
header = response.request.headers
print(header)
'''
{'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}'''

伪装浏览器

import requests

url = 'https://www.baidu.com/'
headers = {
    'User-Agent': 'Mozilla/5.0'
}
response = requests.get(url, headers=headers)
header = response.request.headers
print(header)
'''
{'User-Agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}'''

4.Referer

  • 表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术
    在这里插入图片描述

5.状态码

  • 200 : 请求成功
  • 301 : 永久重定向:http://www.360buy.com/永久指向https://www.jd.com/
    -
  • 302 : 临时重定向:https://www.zhihu.com/临时指向登录页面https://www.zhihu.com/signin?next=%2F

在这里插入图片描述

  • 404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
  • 500 : 服务器内部请求
    在这里插入图片描述在这里插入图片描述

6.抓包工具

在这里插入图片描述

  • Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
  • Console : 控制台 (打印信息)
  • Sources : 信息来源 (整个网站加载的文件)
  • NetWork : 网络工作(信息抓包) 能够看到很多的网页请求
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值