zoukankan      html  css  js  c++  java
  • 爬虫day01

    爬虫

    1.概念:通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。

    python可以实现爬虫

    (1)pthon:代码优雅学习成本低,具有非常多的模块。具有框架的支持

    scrapy

    https安全超文本传输协议,HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。

    SSL三种加密方式:

    对称秘钥加密:

    非对称秘钥加密:

    数字证书秘钥加密:

    秘钥加密

    分为三种,对称秘钥加密和非对称秘钥加密,以及证书加密

    对称秘钥加密:客户端对数据加密将秘钥一块发送给服务器端,服务器端负责解密。

    非对称秘钥加密:服务器端先告诉客户端,按照服务器端给客户端指定的这种加密形式进行加密。

    (好处就是不用再传秘钥了,不怕被拦截了。拦截了里面也没有秘钥,所以无法被破解,只有服务器端接受了密文之后,服务器端用自己的私钥,对密文进行解密。

    坏处:非对称加密效率较低,处理起来较为复杂,通信过程中使用就有一定的效率问题而影响通信速度)

    证书加密:和非对称加密相比多了中间环节(数字证书的三方机构)

    # 演示最简单的一个爬虫程序
    # 导包
    import requests #使用频率高
    import urllib.request
    import urllib.parse
    #指定一个url
    url='https://www.taobao.com'
    #通过requests模块发起请求:get函数返回响应对象
    response=requests.get(url=url) #模块调函数,函数调参数
    #response.json()#获取响应对象中json格式的数据
    # response.encoding #获取响应数据的编码格式(可被修改)
    # content获取的是二进制的数据
    # data=response.content#二进制
    #获取响应内容(爬去淘宝页面数据)
    # response.status_code#响应状态码
    # response.headers#获取响应头信息
    data=response.text#字符串
    print(response.encoding)  #这个响应格式是由服务器决定的
    

      

    # 需求,根据指定的 url进行网页数据的爬去,且进行持久化操作
    import requests
    # 指定url
    url='https://www.taobao.com'
    # 发起请求
    response=requests.get(url)   #问服务器要东西请求对象
    
    data=response.text#对象的东西取出来  找你要东西 把东西给你  从响应对象里取出来
    
    #进行文件操作
    with open('./taobao.html','w',encoding='utf-8')as fp:
        fp.write(data)
        print('over')
    

     动态数据抓取不到

    #get
    
    import requests
    import urllib.request
    #requests的get请求
    
    #模拟抓取系统,手动指定关键字进行百度搜索,保存搜索结果
    wd=input('enter a word:')
    get_url='http://www.baidu.com/s'
    #url的特性:url必须是有ascii编码的数据组成
    #可以将请求携带的参数封装到一个字典中
    param={
        'ie':'utf-8',
        'wd':wd
    }
    
    # url=urllib.request.urlparse(url)
    # # 域名当中有中文的话能够通过urlparse(url)进行解析
    
    #参数2:对请求参数的封装
    response=requests.get(url=get_url,params=param)
    # response.encoding='utf-8'
    data=response.text
    filename=wd+'.html'
    with open(filename,'w',encoding='utf-8') as fp:
        fp.write(data)
    

      

  • 相关阅读:
    JavaAPI基础(1)
    类与对象、封装、构造方法
    Java语言基础
    Request请求的应用
    Response的应用
    java生成动态验证码
    Servlet的配置
    常见的状态码。。
    简单学习【1】——打包JS
    NodeJS2-2环境&调试----引用系统内置模块,引用第三方模块
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9709951.html
Copyright © 2011-2022 走看看