爬虫所需准备知识 0221

初识url

url,叫做统一资源定位符,也就是我们说的网址,或者链接

每一个url,可以定位到一个资源

如果想要得到这个资源

例如:

如果记住了一个图片的网址,下次通过该url,仍可访问这个图片

如果记住了一个网页的网址,下次通过该url,仍可访问该页面

发起请求,申请就可

http协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

网络请求是什么

访问一个网站我们做了什么?

  • 输入一个网站(从浏览器b)
  • 看到网页的内容(来自服务器s)
  • 了解bs架构

我们为什么要访问网站?

  • 我们需要查看信息
  • 网站有这个信息
  • 我们向网站请求获取这些信息

生活中的请求

  • 我们需要用钱(我们相当于客户端)
  • 父母努力工作有钱(父母相当于服务端)
  • 需要用钱时找父母(钱相当于数据)

请求协议

但是

是不是我们只要找父母要钱

父母就会给?

想一想,如果我们找父母要钱时

怎样的请求,会成功的拿到?

  • 信息齐全
  • 请求合理

因此:

向父母要钱时,是需要有一个规范的

说明详情,要求合理,就可以获得

没有这个规范

一定得不到

用户访问网站时也是一样

我们需要信息

网站提供信息

我们需要按照一个规范来请求

这个请求规范就是http请求协议

了解http请求协议

协议是什么?

。。。

请求协议就是请求时需要尊守的约定

只有我们尊守了这个约定

就可以成功的发起请求

合理的请求,就会得到合适的结果(响应)

下面

我们模拟http协议的工作方式,来写一个向父母要钱的一个合理的请求

当面申请  向刘备申请  常规资金申请方法

申请金额:5000元

申请有:刘禅

币种:人民币

资金用途:购买笔记本电脑

返回方式:支付宝转帐

收款帐号:15912345678



情况说明:老师提示我们要在开学前完成电脑的准备,推荐购买学习型的笔记本电脑。

当我们按照这样的规范向父母提出用钱的申请时

父母一看就懂

就可以迅速给出我们回应

从而避免了一个又一个问题的详情了解

提高了请求的效率

如果是我们操做浏览器向目标网站发起请求索要信息时

需要按http请求协议来发内容

在这里插入图片描述

实际的一个请求协议

http://news.baidu.com/guonei

在这里插入图片描述

响应协议

浏览器向网站发起了请求

网站回应的时候,也是会按照一个规范来回应的

例如:

观注这个网站的回应

http://news.baidu.com/guonei

在这里插入图片描述

在这里插入图片描述

以向家长申请用钱为例

家长需要回应学生

规范的回应信息大约如下

网络回应  同意  申请通过
转帐金额:5000元
币种:人民币
到帐时间:即时到帐
收款人:刘禅
打款人:孙尚香
收款帐号:15912345678
叮嘱:省着点花,不够再要

转帐截图

如果按照这样的一套信息发送给学生(申请方)

学生即收到了请求的内容

也收到了相关的信息

访问网站时

有了上面的理解后,继续理解

当我们该问网站时,只是输入了一个网址,就得到内容了

谁在帮我们做这些协议?

请求协议,谁在发?

响应协议,谁在发?

我们应该掌握什么技能?

  • 操作。。。。的技能

当我们写代码的时候

请求协议谁在发?

响应协议谁在发?

我们应该掌握什么技能?

  • 操作。。。的技能

小结http协议

  • 分为请求协议与响应协议
  • 请求协议提供了请求相关的信息
    • 我要访问哪个网址
    • 我是谁
    • 我需要什么样的内容
    • 我希望这个内容是什么格式的
    • 等等
  • 响应协议提供了响应的相关信息
    • 请求是否通过的回应
    • 给你的是什么内容
    • 是什么格式的内容
    • 等等

获取数据时的阻力

并不是所有的请求,都会得到响应的

拿向家长要钱为例子

需要用钱了,要找家长要钱

按照请求协议,发起请求,内容如下:

当面申请  向刘备申请  常规资金申请方法

申请金额:5000元

申请者:隔壁老张家的熊孩子

币种:人民币

资金用途:购买笔记本电脑

返回方式:支付宝转帐

收款帐号:15987654321



情况说明:老师提示我们要在开学前完成电脑的准备,推荐购买学习型的笔记本电脑。

问,刘备要给熊孩子转帐吗?

为什么?

再或者

刘禅找刘备申请用钱

申请理由是,网吧上网

刘备会同意吗?为什么

服务端的立场

提供什么服务?

人类访问时,会怎样?

爬虫访问时,会怎样?

服务端的反爬

为什么要反爬?

为什么不反爬?

例子,体验一下被反爬

操作:

人工发一次请求

代码发一次请求

比较

通过代码获取数据

import requests

url = 'https://movie.douban.com/'

# 不伪装身份直接去要数据
res = requests.get(url)
con = res.content.decode()
print('响应长度:', len(con))
print('响应状态码', res.status_code)
print(res.request.headers)

反-反爬

了解了反爬的原理以后

如何进行处理,可以实现目标呢?

办法:

发起请求的时候,自报身份

让网站服务器知道,是一个浏览器在请求

被反爬与反反爬的演示代码:

import requests

url = 'https://movie.douban.com/'

# 不伪装身份直接去要数据
res = requests.get(url)
con = res.content.decode()
print('响应长度:', len(con))
print('响应状态码', res.status_code)
print(res.request.headers)

print('-'*30)
# 伪装身份后去要数据
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
res2 = requests.get(url, headers=headers)
con2 = res2.content.decode()
print('响应长度:', len(con2))
print('响应状态码', res2.status_code)
print(res2.request.headers)

能力越大,责任越大

每一种新技术的兴起,都会带来好与坏的两面

我国互联网技术的强大,助力了经济发展,也让网络诈骗兴起

人工智能技术,会让人类生活更加便捷高效,但同样会有很多新的问题

爬虫技术同理,合理使用爬虫技术,提升获取数据的效率

未来大家技术变历害后,不要利用爬虫技术做非法不正当的事情

在这里插入图片描述

老师的心声

在这里插入图片描述

发布了873 篇原创文章 · 获赞 43 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/ifubing/article/details/104437310