爬虫前导知识(下)

http请求与响应

HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息


1577947942403-0e00ed58-5457-4dbf-8120-9af4ad80d9c9.jpg

  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语法结构,完整的显示出来了。
  • Headers
    • General:一般的全部的
      • Request URL:请求网址,一般情况下get方法下URL网址及参数与Request URL是一致的。
      • Request Method:请求方式,主要是get和post方法。
      • Status Code: 状态码。'200 OK'
      • Remote Address: 服务器主机:端口如:14.215.177.38:443
      • Referrer Policy: unsafe-url
    • Response Headers: 服务器响应
    • Request Headers:客户端请求,view source查看源码;view parsed视图解析
      • Host: 域名
      • Connection: keep-alive 长链接
      • Accept: / 接受所有格式
      • User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,likeGecko)Chrome/89.0.4389.128 Safari/537.36 用户代理,它是反反爬虫的第一步,有时会用到代理IP.
      • Referer 推荐网址
      • Cookie: 记录用户的相关信息。
    • Query String Parametrs:网址参数。
      • URL地址如:https://www.baidu.com/s?ie=utf-8&mod=1&isbd=1&isid=1AE2E74CAFA33721&ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E7%94%B7%E7%94%9F&fenlei=256&rsv_pq=d246ba3000005f6e&rsv_t=5a35NsFHrZSJ5I0F84%2F1nstJUTKd043DkOwmeKV8iFqBy9Jn8BtKbRksy8Y&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_sug3=7&rsv_sug1=4&rsv_sug7=101&rsv_btype=i&prefixsug=%25E7%2594%25B7%25E7%2594%259F&rsp=1&inputT=3356&rsv_sug4=6521&rsv_sid=33816_31660_33849_26350_22159_33810&_ss=1&clist=&hsug=&f4s=1&csor=2&_cr1=34542
      • URL对应的参数:
        ie: utf-8
        mod: 1
        isbd: 1
        isid: 1AE2E74CAFA33721
        ie: utf-8
        f: 8
        rsv_bp: 1
        rsv_idx: 1
        tn: baidu
        wd: 男生
        fenlei: 256
        rsv_pq: d246ba3000005f6e
        rsv_t: 5a35NsFHrZSJ5I0F84/1nstJUTKd043DkOwmeKV8iFqBy9Jn8BtKbRksy8Y
        rqlang: cn
        rsv_enter: 0
        rsv_dl: tb
        rsv_sug3: 7
        rsv_sug1: 4
        rsv_sug7: 101
        rsv_btype: i
        prefixsug: %E7%94%B7%E7%94%9F
        rsp: 1
        inputT: 3356
        rsv_sug4: 6521
        rsv_sid: 33816_31660_33849_26350_22159_33810
        _ss: 1
        clist:
        hsug:
        f4s: 1
        csor: 2
        _cr1: 34542

爬虫介绍(Spider)

什么是爬虫?

  • 简单一句话就是代替人去模拟浏览器进行网页操作

为什么需要爬虫?

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

企业获取数据的方式?

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

Python 做爬虫的优势

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

爬虫的分类

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

几个概念

GET和POST

  • GET : 一般情况下,只从服务器获取数据下来,并没有对服务器产生影响,查询参数都会在URL上显示出来。
  • POST : 请求向服务器发送数据(登录)、上传文件,对服务器产生影响,如有道翻译。查询参数和需要提交数据是隐藏在Form Data表单里的,不会在URL地址上显示出来如:
Request URL: https://fanyi.youdao.com/
translate_o?smartresult=dict&smartresult=rule
Request Method: POST
Status Code: 200 OK

Form Data
i: Refere
from: AUTO
to: AUTO
smartresult: dict
client: fanyideskweb
salt: 16185866929211
sign: 5d6089db8fb3ebde4edf61eff56ef169
lts: 1618586692921
bv: 361f5b4642c35583714ed97b4e73e58d
doctype: json
version: 2.1
keyfrom: fanyi.web
action: FY_BY_REALTlME

URL组成部分

  • URL: 统一资源定位符
    https://baike.baidu.com/item/%E6%9D%A8%E5%B9%82/149851?fr=aladdin#3
    • https: 协议
    • baike.baidu.com: 主机名可以将主机理解为一台名叫 baike.baidu.com 的机器。这台主机在 baidu.com 域名下
    • port 端口号: 80 /baike.baidu.com 在他的后面有个 :80 可以省略
    • item/%E6%9D%A8%E5%B9%82/149851?fr=aladdin访问资源的路径
    • anchor: #3锚点用前端在做页面定位的

  • 注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)

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内核)

Referer

  • 表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术

状态码

  • 200 : 请求成功
  • 301 : 永久重定向
  • 302 : 临时重定向
  • 404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
  • 500 : 服务器内部请求

你可能感兴趣的:(爬虫前导知识(下))