爬虫- 爬虫简介

本文介绍了网络通讯的基础,包括端口和通讯协议,详细讲解了TCP/IP和HTTPS,SSL的概念。接着概述了爬虫的基本知识,解释了爬虫的作用和企业获取数据的方式,并讨论了Python作为爬虫开发的优势。此外,还提到了GET和POST请求、URL结构、User-Agent以及常见的HTTP状态码。最后,提及了网络抓包工具在网络分析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通讯协议

1.1 端口

我们想要进行数据通讯分几步?

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

国际组织定义了通用的通信协议 TCP/IP协议。
所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。
HTTP又叫做超文本传输协议(是一种通信协议) HTTP 的端口是 80。

2. 网络模型

在这里插入图片描述
后期更新了新的参考模型 TCP/IP参考模型
在这里插入图片描述

2.1 HTTPS是什么呢?

https=http+ssl,顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的https,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。

2.2 SSL怎么理解?

.SSL也是一个协议主要用于web的安全传输协议。
在这里插入图片描述

3. 爬虫介绍

1.什么是爬虫?
简单一句话就是代替人去模拟浏览器进行网页操作。
2.为什么需要爬虫?
为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等。
3.企业获取数据的方式?
1.公司自有的数据
2.第三方平台购买的数据 (百度指数、数据堂)
3.爬虫爬取的数据
4.Python 做爬虫的优势
HP : 对多线程、异步支持不太好。
Java : 代码量大,代码笨重。
C/C++ : 代码量大,难以编写。
Python : 支持模块多、代码简介、开发效率高 (scrapy框架)。
5.爬虫的分类
通用网络爬虫: 例如 baidu google yahu。
聚焦网络爬虫: 根据既定的目标有选择的抓取某一特定主题内容。
增量式网络爬虫: 指对下载网页采取增量式的更新和只爬行新产生的或者已经发生变化的网页爬虫。
深层网络爬虫: 指那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web页面。 例如 用户登录注册才能访问的页面。

4. 几个概念

1. GET和POST
GET : 查询参数都会在URL上显示出来。
POST : 查询参数和需要提交数据是隐藏在Form表单里的,不会在URL地址上显示出来。
2. URL组成部分
URL: 统一资源定位符https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
https: 协议
new.qq.com: 主机名可以将主机理解为一台名叫 news.qq.com 的机器。这台主机在 qq.com 域名下
port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略TWF20200/TWF2020032502924000.html 访问资源的路径
#anchor: 锚点 用前端在做页面定位的。
注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)
例如 : https://tieba.baidu.com/f?ie=utf-8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search
%E6%B5%B7%E8%B4%BC%E7%8E%8B = 海贼王
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内核)
4.Refer
表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术。
5.状态码
200 : 请求成功
301 : 永久重定向
302 : 临时重定向
403 : 服务器拒绝请求
404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
500 : 服务器内部请求

5.抓包工具

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

import urllib.parse
import urllib.request
import urllib.response
name=input('请输入你想搜索的内容:')
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36','cookie':'H_PS_645EC=2113BYx49ntlOsSl0ftpRBrL90EnY71IAdtRzmK%2FkjhimDaW%2Ba0uaZSSnTM; COOKIE_SESSION=43_0_3_3_1_0_0_0_3_0_0_0_1588082447_0_6_0_1588082484_0_1588082478%7C3%230_0_1588082478%7C1; BD_UPN=1d314753; BDSVRTM=128; BDRCVFR[SL8xzxBXZJn]=mk3SLVN4HKm; delPer=0; PSINO=1; H_PS_PSSID=31356_30973_1421_31326_21080_31423_31341_31271_31464_31228_30823_26350_31163_31472_22160; BAIDUID=971752E4E2392BB536987ACC10480F77:FG=1; BIDUPSID=971752E4E2392BB536987ACC10480F77; PSTM=1588075435; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598'
}
baseurl='https://www.baidu.com/s?'
wd={'wd':name}
#name = urllib.parse.urlencode(wd)
name=urllib.parse.quote(name)
url=baseurl+name
print(url)
req=urllib.request.Request(url,headers=headers)
res=urllib.request.urlopen(req)
html=res.read().decode('utf-8')
with open('结果.html','w',encoding='utf-8') as f:
    f.write(html)
import urllib.request
url = 'http://www.baidu.com/'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
req=urllib.request.Request(url,headers=headers)
response=urllib.request.urlopen(req)
html=response.read().decode('utf-8')
print(html)
print(response.getcode())
print(response.geturl())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值