爬虫

作者: 背对背吧 | 来源:发表于2018-12-23 16:42 被阅读0次
    1. 什么是爬虫??
      爬虫:网络爬虫机器人,从互联网自动抓取数据的程序
      理论上:通过浏览器看到的数据,我们一般都是可以获取到的

    2. 爬虫有什么作用:
      1).搜索引擎
      2.)商品比价(慧慧购物助手)
      3).知乎的数据分析平台(知乎专栏,数据冰山)
      4.)如何去写一个爬虫???
      网页的三大特征:
      1).每一个网页都有一个唯一的url(统一资源定位符),来进行定位
      2).网页都是通过HTML(超文本)文本展示的
      3).所有的网页都是通过HTTP<超文本传输协议>(HTTPS)协议来传输的

    3. 爬虫的流程:
         1).分析网站,得到目标url
         2).根据url,发起请求,获取页面的HTML源码
         3.)从页面源码中提取数据
           a.提取到目标数据,做数据的赛选和持久化存储
           b.从页面中提取到新的url地址,继续执行第二部操作
         4).爬虫结束:所有的目标url都提取完毕,并且得到数据了,再也没有其他请求任务了,这是意味着爬虫结束

    1. OSI七层协议:从上往下:

      1). 应用层:为用户的应用程序提供网络服务的(http,https,ftp....)
      2).表示层:负责端到端的数据信息可以被另一个主机所理解和识别,并且按照一定的格式将信息传递到会话层
      3).会话层:会话层是管理主机之间的会话进程,负责建立,管理,和终止会话进程
      4).传输层:进行数据传输的(TCP UDP)
               tcp udp
      传输方式上   面向连接的      非面向连接的
      传输的数据   传输的是数据流    传输的是数据包(可能会出现丢包)
      传输的效率    慢          快
      传输的稳定性   高          低

      5).网络层: 路由器
      6).数据链路层: 网桥 交换机
      7).物理层: 网线 网卡 集线器 中继器

       发起请求:
       会携带请求头:
      

    url:发起请求的url地址
    request.urlopen():使用urlopen方法模拟浏览器发起请求
    data=None, 默认情况为None,表示发起的是一个get请求,不为None,则发起的是一个post请求
    headers={},设置请求头(headers对应的数据类型是一个字典)
    origin_req_host=None, (指定发起请求的域)
    unverifiable=False,忽略SSL认证
    method=None:指定发起请求的方式
    'User-Agent':模拟浏览器进行请求
    'Cookie':存储在浏览器里面的,使用cookie表明用户的身份
    'Refere':说明当前的请求是从哪个页面发起的
    read()方法读取文件全部内容,返回字符串(注意我们在使用read()获取响应结果的时候,执行一次后,下次在执行就没有数据了)
    将获取到的二进制数据,转换为字符串decode str_html = b_html.decode('utf-8')

    1. 爬取某个关键字(中文)的数据------通过寻找关键字(中文) 爬取数据

    2. 在get请求中有中文

    3. 转化为URL编码格式 quote

    4. 在涉及到有多个wd的中文时
      a.使用字典的键值对来进行编码
      b.创建一个字典 用parse下的模块 urlencode方法 将一个字典类型的参数转化为url编码的格式

    5. 将域和转化后的编码拼接 组合成一个完整的url地址

    6. 在有完整的url编码后 开始爬取数据
      发起请求的方法(def xxxx(url)) 创建一个参数发起请求

    7. 先设置请求头
      req_header = {User-Agent}

    8. 设置请求头前需要请求对象 创建一个对象
      req

    9. 发起请求 获得一个响应
      response =

    10. 响应后 判断状态 ==200 就行

    11. 获得的数据是二进制的bytes 转换成中文 将获取的数据返回到html中 return response.read().decode('utf-8')

    12. 存储数据到本地
      创建文档
      filename = '第'+ str(page)+'页'+kw+'.html' #建文档名
      save_page_html(html,filename) #存储数据 需要将数据存储到本地 使用def save_page_html
      数据存储的位置
      文件读写操作
      with open('get请求url出现中文——中获得的数据'/+filename,'w') as file:
      file.write(html)

    相关文章

      网友评论

          本文标题:爬虫

          本文链接:https://www.haomeiwen.com/subject/nbynkqtx.html