• 第一章 认识爬虫


    1.爬虫
    - day01:
    - 爬虫基本原理
    - requests模块
    - BeautifulSoup4

        - day02:
            - BeautifulSoup4
            - selenium
    
        - day03:
            - selenium
            - 写一些爬虫demo
            - 破解登录滑动验证码
    
        - day04:
            - scrapy
    
        - day05:
            - scrapy
    

    一 爬虫基本原理:
    1.什么是爬虫?
    - 爬取数据

    - 什么是互联网?
        - 互联网是由一堆网络设备,将世界上所有的电脑互联到一起;
    
    2.为什么要使用爬虫技术?
        - requests 模块底层帮我们封装好了socket套接字,我们只需要关注http协议的通信流程;
    
        - 普通用户获取数据:
            - 打开浏览器,输入网址
            - 访问目标网站
            - 目标网站将数据返回给浏览器
            - 浏览器将数据进行渲染
            - ctrl + c 、 ctrl + v
    
        - “爬虫程序”获取数据:
            - 模拟浏览器往目标网站发送请求:
                - 请求库
                    - requests模块
                    - selenium模块
    
            - 获取目标网站返回的响应数据
                - 服务端会自动将数据返回,无需通过代码实现
    
            - 解析并提取有价值的数据
                - 解析模块:
                    - re正则模块
                    - BeautifulSoup4解析库: bs4
                    - xpath解析语法: 通过文档树,查找规则
                    - selector属性选择解析库: css
    
            - 保存到数据库、或者本地
                - 存储库:
                    - MySQL
                    - redis
                    - mongodb
                    - file
    
       - 爬虫全过程:
            - 发送请求
            - 获取响应数据
            - 解析并提取数据
            - 保存数据
    
       - 爬虫三部曲(*******):
            1.发送请求(*******)
                - 先分析目标网站的http协议请求流程
                - 再写代码
    
            2.获取数据
            3.保存数据
    
       - 安装
           pip3 install requests
    
    • 分析http协议请求流程:

      • 谷歌浏览器自带的开发者工具(推荐使用):

        • GET:

          • 请求url:

          • 请求方式:

            • Request Method: GET
          • 响应头(请求后,服务端返回的数据):

            • set-cookies: 服务端告诉浏览器要保存cookies
            • Location: 服务端告诉浏览器需要立马跳转的url地址
          • 请求头(携带访问目标服务端的数据):

            • Cookie
            • user-agent: 浏览器凭证,服务端有可能通过它做反扒
            • Referer: 当前url,上一次访问的url地址;
          • 请求参数:Params

        • POST:

          • 请求url:

          • 请求方式:

            • Request Method: POST
          • 响应头(请求后,服务端返回的数据):

            • set-cookies: 服务端告诉浏览器要保存cookies
            • Location: 服务端告诉浏览器需要立马跳转的url地址
          • 请求头(携带访问目标服务端的数据):

          • 请求体:

            • 明文用户名:
              • 正确用户名
            • 正确密文pwd:
              • OQUoK471BPXLSQbQ3rKKpbYJZ/x8zgZ91LVs4Bw6sKoNeuJH9KoOkac0mhDiZ/H3n1Adxq1g/tgSD3EEhreqVoxJMO3VxqYH5LDlHR0U0gxeGpeuTaHGKWE4aun6vxVWjYIJcfAmQ3/b2JUqGawYcM9xtJZPrhPU86u/1i7e3DM=
      • fildder

    '''
    1.发送请求:
        - pip3 install requests
    '''
    
    # import requests
    # from urllib.parse import urlencode
    
    # # 1.请求url,请求方式GET
    # url = 'https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3'
    #
    # # 组织请求头信息
    # headers = {
    #     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
    #     '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'
    # }
    #
    # # 2.通过requests模块发送GET请求
    # # 往url地址发送请求,并得到一个返回值,赋值给response变量
    # # response == response 对象
    # response = requests.get(url, headers=headers)
    #
    # print(response.status_code)  # 200成功
    # # 获取响应文本
    # print(response.text)
    #
    # with open('baidu.html', 'w', encoding='utf-8') as f:
    #     f.write(response.text)
    
    
    
    # demo2
    # import requests
    # from urllib.parse import urlencode
    #
    # # 1.请求url,请求方式GET
    # url = 'https://www.baidu.com/s?' + urlencode({'wd': '美女'})
    #
    # # 组织请求头信息
    # headers = {
    #     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
    #     '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'
    # }
    #
    # # 2.通过requests模块发送GET请求
    # # 往url地址发送请求,并得到一个返回值,赋值给response变量
    # # response == response 对象
    # response = requests.get(url, headers=headers)
    #
    # print(response.status_code)  # 200成功
    # # 获取响应文本
    # print(response.text)
    #
    # with open('meinv.html', 'w', encoding='utf-8') as f:
    #     f.write(response.text)
    
    
    
    # demo3
    # import requests
    #
    # # 1.请求url,请求方式GET
    # url = 'https://www.baidu.com/s?'
    #
    # # 组织请求头信息
    # headers = {
    #     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
    #     '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'
    # }
    #
    # # 2.通过requests模块发送GET请求
    # # 往url地址发送请求,并得到一个返回值,赋值给response变量
    # # response == response 对象
    # response = requests.get(url, headers=headers, params={'wd': '美女'})
    #
    # print(response.status_code)  # 200成功
    # # 获取响应文本
    # print(response.text)
    #
    # with open('girl.html', 'w', encoding='utf-8') as f:
    #     f.write(response.text)
    
    
    

  • 相关阅读:
    postgresql procedure 存储过程
    Laravel Queues 队列应用实战
    解决IDEA内打开vim 乱码,git rebase -i 中文乱码
    Maven和maven-shade-plugin的小坑
    Spring+Mybatis 多套数据源实现
    【解决】Teamcity VCS git-upload-pack not permitted on "https://xxxx.com/slankka.git/"
    【Flink系列八】构建实时计算平台——动态加载UDF
    【Flink系列零】构建实时计算平台——FlinkSQL 作业菜鸟笔记
    【Flink系列七】构建实时计算平台——校验FlinkSQL
    【Flink系列六】构建实时计算平台——Flink 1.10+通过Kerberos连接HiveCatalog
  • 原文地址:https://www.cnblogs.com/demiao/p/12122141.html
Copyright © 2020-2023  润新知