zoukankan      html  css  js  c++  java
  • 爬虫---01.requests模块

    • requests是基于网络请求的模块

      • pip install requests
    • 作用和流程:模拟浏览器发起请求

      • 1.指定url

                        url = "https://..."
        
      • 2.发起请求

                        response = requests.get(url=url, headers=headers)
        
      • 3.获取响应数据(爬取到的页面源码数据)

                        page_text = response.text
        
      • 4.持久化存储

                        with open('./xx.html', 'w', encoding='utf-8') as fp:
                            fp.write(page_text)
        
      • 5.雪薇进阶点就直接解析放入excel或者数据库

    • url携带参数和参数动态化

      • 1.将携带的动态参数以键值对的影视封装到一个字典中

      • 2.将该字典作用到get方法的params参数中即可。

      • 3.需要将原始url中携带的参数删除

                       keyWord = input(">>>")
                       params = {"query": keyWord}
                       url = ""
                       response = requests.get(url, params=params)
                       # 注意 在出现乱码的情况时,需要修改编码格式
                       response.encoding = "utf-8"
                       page_text = response.text
                       # 注意 params字典值为空,要添加“”空字符,数字要写成字符串
        
                       # 实例 用json是因为数据是对象格式的
                       url = "https://movie.douban.com/j/chart/top_list"
                       params = {"type": "5",
                                 "interval_id": "100:90",
                                 "action": '',
                                 "start": "0",
                                 "limit": "20",
                       }
                       headers = {
                           "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
                       }
                       response = requests.get(url=url, params=params, headers=headers)
                       print(response.json())
        
    • User-Agent

      • 请求载体的身份标识(浏览器或爬虫程序就是载体)
      • 浏览器的身份标识是固定的 身份标识可以通过抓包工具获取
      • 爬虫程序 身份标识是各自不同
    • 动态加载数据的捕获

      • 通过requests模块进行数据爬取无法每次都实现可见即可得

      • 有些数据是通过非浏览器地址栏中的url请求到的数据 而是其他请求请求到的数据,这些通过其他请求请求到的数据就是动态加载的数据。

      • 通过抓包工具进行局部搜索,检测网页中是否有动态加载数据
        在页面打开抓包工具 捕获到地址栏对应数据包 在该数据包的response选项卡搜索数据 如果没有就是动态加载的。

      • 捕获动态加载数据
        定位到动态加载数据对应的数据包,从该数据包中就可以提取出数据
        - 请求url
        - 请求方式
        - 请求携带的参数
        - 看到响应数据

      • 基于抓包工具进行全局搜索不一定可以每次都能定位到动态加载数据对应的数据包
        如果动态加载的数据是经过加密的密文数据,就抓取不到

                        # 在录入关键字的本文框中录入搜索按钮 发起ajax请求
                        # 当前页面刷新出来的位置信息一定是通过ajax请求请求到的数据
                        # 基于抓包工具定位到该ajax请求的请求包 从该数据包中捕获到
                          # 1.请求的UrL
                          # 2.请求方式
                          # 3.请求携带的参数
                          # 4.看到的相应数据
                      
                       # post请求方式 注意data参数是post方法中处理参数动态化的参数
                       # 这里还有两个概念 抓xhr包和要用表单数据打包data         
                       response = requests.post(url=url, headers=headers, data=data)
                       page_text = response.json()
        
    • 补充资料:User-Agent汇总

      • safari 5.1 – MAC
        User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
      • safari 5.1 – Windows
        User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
      • IE 9.0
        User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;
      • IE 8.0
        User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)
      • IE 7.0
        User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
      • IE 6.0
        User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
      • Firefox 4.0.1 – MAC
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
      • Firefox 4.0.1 – Windows
        User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
      • Opera 11.11 – MAC
        User-Agent:Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11
      • Opera 11.11 – Windows
        User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11
      • Chrome 17.0 – MAC
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
      • 傲游(Maxthon)
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)
      • 腾讯TT
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)
      • 世界之窗(The World) 2.x
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
      • 世界之窗(The World) 3.x
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)
      • 搜狗浏览器 1.x
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)
      • 360浏览器
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)
      • Avant
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)
      • Green Browser
        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
  • 相关阅读:
    内存堆与栈的区别
    深度理解相对路径和绝对路径
    INFO:InstallAnywhere的Enterprise版本和Standard版本的主要区别
    HOWTO:InstallShield中如何调用批处理文件
    HOWTO:InstallScript工程中如何在用户协议界面中默认为接受协议
    HOWTO:InstallShield中如何通过脚本获取“My Documents”路径
    INFO:InstallShield工程中关于.NET依赖项的编译扫描警告
    InstallShield Kevin Wan博客文章索引列表(001~100)
    HOWTO:在InstallShield脚本中打开一个URL链接
    INFO:在InstallShield中修改安装包压缩.cab包的大小
  • 原文地址:https://www.cnblogs.com/FGdeHB/p/15490671.html
Copyright © 2011-2022 走看看