数据包分析

更多详细内容请点击

Request Headers

  1. :authority: www.google.com.hk # 请求的域名(对方的服务器地址)
  2. :method: GET # 请求方法,一般浏览器访问网站使用GET请求
  3. :path: /?gws_rd=ssl # 请求路径,也就是 https://ww.google.com.hk/ 后面的内容
  4. :scheme: https # 请求的协议,这里使用https协议(使用SSL加密的http协议)
  5. accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng响应头,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
  6. # 请求文件类型,可以吧这里的文件类型Google一下,因为篇幅太长这里就不做详细介绍了(如text/html是文档/HTML文档的意思)
  7. accept-encoding: gzip, deflate, br # 压缩类型,支援gzip,deflate,br 压缩方式
  8. accept-language: zh-HK,zh;q=0.9 # 浏览器语言,我的默认语言是 zh-hk (中国-香港)
  9. cache-control: no-cache # 缓存讯息,这里是 不缓存(no-cache)
  10. pragma: no-cache # 缓存来源
  11. sec-fetch-dest: document # sec-fetch-* 意为如何使用返回的参数
  12. sec-fetch-mode: navigate
  13. sec-fetch-site: same-origin
  14. sec-fetch-user: ?1
  15. upgrade-insecure-requests: 1 # 不用在意这个东西
  16. user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63
  17. # 非常重要的浏览器UA,表明了浏览器的身份:是什么内核,运行在什么系统上

Response Headers

  1. alt-svc: h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
  2. # 标示这个请求使用http/3 (google已经用上h3了啊)
  3. cache-control: private, max-age=0 # 缓存控制:私有(缓存0秒,也就是不缓存)
  4. content-encoding: gzip # 压缩使用Gzip压缩
  5. content-length: 67582 # HTTP消息长度 67582
  6. content-type: text/html; charset=UTF-8 # 返回文件类型 text/html ,字符编码为 UTF-8
  7. date: Tue, 10 Nov 2020 01:06:54 GMT # 服务器的时间
  8. expires: -1 # 链接过期,-1不过期
  9. p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info." #个人隐私安全平台项目,可以去wiki查询一下p3p
  10. server: gws # 服务器名,这个其实可以自定义,一般用于标示自己用的是什么web服务器
  11. set-cookie: 1P_JAR=2020-11-10-01; expires=Thu, 10-Dec-2020 01:06:54 GMT; path=/; domain=.google.com.hk; Secure; SameSite=none
  12. set-cookie: NID=204=Zl-c80ku7NgAF7VKJt84n2Z4DGob3kh9RCnBCaf21NgeIKVA7GsixU8st4FdJvPODEnS_EYoXKbPOrdhxKI_Si4k2PeLInLNoE5KNlBC1DKyZHP1z0GLesmx8sN-H4hFUe3cvrUDJMyUTq6rTyG8DL4X-rRLcgn1Iy32UlaxFDo; expires=Wed, 12-May-2021 01:06:54 GMT; path=/; domain=.google.com.hk; Secure; HttpOnly; SameSite=none
  13. # set-cookie 是给予cookie
  14. status: 200 # 状态码,非必要
  15. strict-transport-security: max-age=31536000
  16. x-frame-options: SAMEORIGIN
  17. x-xss-protection: 0

爬虫分类

  1. 通用爬虫:使用搜索引擎;优势:开放性,速度快 劣势:目标不明确
  2. 聚焦爬虫:又称主题网络爬虫 优势:目标明确,对用户需求精准,返回内容明确
  3. 增量式:翻页,从第一页到最后一页

爬虫步骤

  1. 确认目标url
  2. 使用python代码发送请求获取数据
  3. 解析数据,得到精确的数据 (找到新的url,回到第一步:循环此步骤直到所有页面都已抓取)
  4. 数据持久化,保存到本地或数据库

这里四步对应后面学习内容,不作说明,后面自会明了

简单爬虫

urllib—-URL 处理模块

  1. import urllib.request #导入库
  2. url = 'http://www.baidu.com/' #设置url
  3. requrl = urllib.request.urlopen(url) #访问url
  4. data = requrl.read().decode("utf-8") #读取访问url的数据并解码
  5. print(data) #打印返回页面

爬虫之中文字符转义

  1. import urllib.request #导入库
  2. import urllib.parse
  3. import string
  4. url = 'http://www.baidu.com/s?wd='
  5. str_data = '动漫'
  6. fin_url = url + str_data #拼接url
  7. parse_url = urllib.parse.quote(fin_url,safe=string.printable,encoding='utf-8') #转义中文字符
  8. url_data = urllib.request.urlopen(parse_url).read().decode("utf-8") #访问url
  9. print(url_data) #打印页面

转义中文字符,必须导入的模块 urllib.parse string

其转义为固定搭配

parse_url = urllib.parse.quote(fin_url,safe=string.printable,encoding='utf-8')

爬虫之网址参数的字典格式转义

https://www.baidu.com/s?wd=动漫 我们可以看到这个URL有参数wd=

如果我们需要多个参数的添加,可以使用字典的方法

接下来我们进行学习

  1. import urllib.request
  2. import urllib.parse
  3. import string
  4. url = 'http://www.baidu.com/s?'
  5. params = {
  6. 'wd' : '动漫', #参数字典,注意填写格式
  7. 'sr' : '123',
  8. 'bn' : 'xiaoyang'
  9. }
  10. deal_zd = urllib.parse.urlencode(params) #关键步骤,对字典进行处理否则Python无法访问
  11. #如下步骤不再赘述
  12. deal_url = url + deal_zd
  13. zy_url = urllib.parse.quote(deal_url,safe=string.printable,encoding='utf-8')
  14. url_data = urllib.request.urlopen(zy_url).read().decode('utf-8')
  15. print(url_data)

这里核心步骤非常明显,其功能就是转义字典格式以至于让Python请求访问

deal_zd = urllib.parse.urlencode(params)