待命出发 [爬虫专题前置知识(0)]

版权声明:Hi,I m Debroon【Q:23609099,青睐互动 https://blog.csdn.net/qq_41739364/article/details/88067937
  •  Python 最基本的语法

  •  什么是编程语言
  •  什么是Python
  •  不同平台使用Python
  •  高频的输出语句 print( )
  •  向前一步吧 有类型数据
  •  不可或缺的输入 input( )
  •  抉择 if 与徘徊 for 
  •  抽象的函数
  •  HTTP协议

  •  常用HTTP请求

  •  URL

  •  Requests Headers

  •  IP地址分类

  •  网页的组成


请按照顺序依次观看:

什么是编程语言:>      http://c.biancheng.net/cpp/html/1721.html

30分钟玩转Python:>  http://c.biancheng.net/view/2010.html

Python教程:>             http://c.biancheng.net/python/

p.s. 如果想快速上手,就不要想着走捷径。不过,Python教程可以只看下面几节。

看完了这些一定要看第3章 ,是爬虫最有用第一节

     哪怕以前没有学过编程,也没关系。我是为零基础而写的。只需要您有一部手机或电脑多敲代码。

     本篇主理论,具体的例子,会分散于爬虫专题的每篇中,敬请期待!

     下面的例子,大部分看不懂可跳过,不过还请认真看。


  HTTP协议

         HTTP协议是Web人员必须掌握的知识,爬虫也不例外。

         HTTP协议 也叫 超文本传输协议,浏览器通过HTTP协议与Web服务器交互,进行通信与传输数据。如,浏览网页、注册登录、发布文章、上传下载等等。

         p.s. 超文本的意思是,不只文本,还有视频、声音等等。

         HTTP协议是明文协议,并不安全容易被截获窃听 端口是 80 (端口:Web服务器在80端口与浏览器交互);

         HTTP协议经过 TLS、SSL加密算法后变成 HTTPS协议 端口是 443;

 常见端口:
端口号 服务类型
21、2121 ftp
22 ssh
25 smtp  (发邮件)
80、8080、3128 http
110 pop (收邮件)
443 https
23、3389 telnet远程桌面(黑客入侵时用于隐藏身份)
1080 socks(速度快)
554 rtsp

   常用HTTP请求   

              HTTP协议是一种基于请求和响应的模型,图示在第一篇博客。        

              浏览器发送一个请求,服务器接受了会发一个响应即 Response,在requests库里面是一个对象。

              

Response

             查看的方法,很简单。几乎每篇博客都有讲,所以不急,说不定看到某篇就会恍然大悟呢,我们重点讲请求方式

  

常用HTTP请求
浏览器请求方式 说明
Get 获取requests-url的资源
Post 获取requests-url的资源时用表单形式附加数据给服务器
Head 获取requests-url的资源头部,检查超链接有效性、网页修改
Put 请求服务器存储一个资源,并用requests-url标识
Delete 请求服务器删除requests-url所标识的资源

              那么requests-url是什么鬼 ??

              url : 统一资源定位符 (Uniform Resource Locator) ,说白了就是网址呗。

              网址格式从来没注意过吧!格式如下,

              协议 :// 服务器 IP [ :端口] /路径/[?查询] 

       e.g. https://blog.csdn.net/qq_41739364/article/details/88084403

       e.g. https://blog.csdn.net/qq_41739364/article/details/86775886

             TA们其实只是Web服务器的一个路径,URL您可以理解为查询路径。

             如果是浏览器Get请求,里面的内容可以在浏览器的开发者工具看到。

                    可视化理解:使用 Fiddler (即小提琴 应用软件) 观察 HTTP协议,考察所有"进出"的数据这个过程俗称 “抓包”。


  Requests Headers

            这是Google Chrome浏览器的开发者工具查看网页请求报文的 Requests Headers 部分

            method : 请求方式,

                           如果是Get,代码如,

import requests
response = requests.get('https://blog.csdn.net/qq_41739364')

                           如果是Post一般以表单形式提交,

import requests
data = {
  'username': 'Debroon',
  'password': ':123456789'
}
response = requests.post('https://blog.csdn.net/qq_41739364', data=data)

            accept:通知服务器,用户代理(浏览器等客户端)能够处理的媒体类型及媒体类型的相对优先级。

                                    常用的媒体类型有以下几类:

                                          文本文件:text/html,text/plain,text/css,application/xhtml+xml,application/xml...

                                          图片文件:image/jpeg,image/gif,image/png...

                                          视频文件:video/mpeg,vedio/quicktime...

                                          应用程序使用的二进制文件:application/octer-stream,application/zip...

          cookie : 记录状态信息,因为HTTP协议是无状态协议(没有记忆)。如我们登录网页,浏览器就记住了,下一次不需要重复登录,不过cookie也会过期那时候就需要重新登录。

标题
Cookies信息
Name Cookies名称
Value Cookies值,Unicode字符是字符编码,二进制是BASE64编码
Domain Cookies域名
Max Age Cookies失效时间,单位秒
Path Cookies使用路径
Size Cookies大小
HTTP Cookies包含httponly属性,若为真则HTTP头带Cookies信息
Secure Cookies断言,默认值false表示以HTTPS或SSL加密

cookie这个参数在爬虫里面有时候不用不行。

import requests
url = 'https://www.baidu.com'

headers = {
  'cookie': 'uuid_tt_dd=10_19904453150-1549009901634-808423; smidV2=201902011631453b736b8bff427248aab818365387213e0048460bd254e60c0; UN=qq_41739364; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=1788*1*PC_VC!5744*1*qq_41739364; UM_distinctid=16913203d14260-00a7abe0271b09-10346654-100200-16913203d15123; hasSub=true; dc_session_id=10_1551572310279.776002; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1551534354,1551534419,1551572312,1551572318; SESSION=b6639b87-fc3d-4bdf-aa96-1aa7bdaa2fde; UserName=qq_41739364; UserInfo=5f9415c9f3474f4fad5a49a1390245b6; UserToken=5f9415c9f3474f4fad5a49a1390245b6; UserNick=Debroon; AU=690; BT=1551602704609; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1551611508; dc_tos=pnsf3u'
}

response = requests.get(url, headers=headers)

          refer : 记录浏览器上次访问的URL,有的网站会通过请求中有没有携带这个参数来判断是不是爬虫,从而确定是否限制访问。所以有时候也需要在headers中添加上这个参数。

          user-agent : 标识请求的浏览器身份的也叫UA,大部分网站都会通过请求中有没有携带这个参数来判断是不是爬虫,从而确定是否限制访问。所以有时候也需要在headers中添加上这个参数,因为User-Agent默认值为python-requests/2.18.4(数字会变),这样就容易被网站识别出是一个爬虫,从而限制爬取。代码如,

import requests
url = 'https://blog.csdn.net/qq_41739364'
headers = {
  'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
response = requests.get(url, headers=headers)

                              但当我们要爬取的数据量比较大的时候,用一个user-agent是不够的,因为服务器很聪明,一个浏览器不停地在访问我的URL,而且频率那么快,肯定是那个挨千刀的程序员写的爬虫,马上就会限制爬虫访问,所以我们经常会用一个user-agent列表,来回地切换。这样服务器就会以为是多个浏览器(也就是多个用户)在访问URL,会判断这是正常的。代码如,

import requests, random

url = 'https://blog.csdn.net/qq_41739364'

agent_list = ['Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)']
# 这是一个User-Agent列表,在使用的时候随机从中选取一个作为请求头的参数传递进去

headers = {
  'user-agent': random.choice(agent_list)
}
response = requests.get(url, headers=headers)

 IP地址分类              

   快递地址 = 大地址 + 小地址,如某个地点地址,大地址是中华人民共和国X省X市,小地址是x镇x乡x区。

   IP地址也是类似的。意不意外,地址就是这么表示的。

   IP地址 = 网络号 + 主机号

   共4个字节, 格式形如,(IPV4)

                  A类:第一个字节表示网络(号),第 1 位为 0 范围在1-126,其余的字节存储主机(号) 可容纳2^{24}台主机(这么多人可以同时上网)

                                掩码 (隐藏主机号1个字节) : 255. 0. 0. 0

                  B类:前二个字节表示网络(号),第 2 位为 10 范围在128-191,其余的字节存储主机(号) 可容纳2^{16}台主机

                            中科大B类网络:159. 226. xx. xx

                            清华B类网络    :166. 111. xx. xx

                            北大B类网络    :162.105. xx. xx

                                 掩码 (隐藏主机号2个字节) : 255. 255. 0. 0

                  C类:前三个字节表示网络(号),第 2 位为 110 范围在192-223,其余的字节存储主机(号) 可容纳2^{8}台主机(255是一个广播地址)

                                 掩码 (隐藏主机号3个字节) : 255. 255. 255. 0

                  私有:192. 168. x. x 、10. x. x. x  ... 

   还有一类特殊的IP地址,

                 全 0 =》 主机自己

                 全 1 =》 有线广播 即(255)

                 网络号全 0 + 主机号全 1 =》  网络上所有主机

                 网络号全 1 + 主机号全 0 =》  定向网络广播

                 127: xxx : 回送


 网页的组成

           网页 = html(大致框架) + css(美化布局) + javaScript(实时交互)

猜你喜欢

转载自blog.csdn.net/qq_41739364/article/details/88067937