• 03-requests模块携带UA请求头,携带参数,携带cookie,持久化存储


    reques模块的基础使用方法

    chrome浏览器使用方法了解新建隐身窗口的目的,了解chrome中network的使用

    1,新建隐身窗口(无痕窗口
    在这里插入图片描述
    在这里插入图片描述

    • 浏览器中直接打开网站,会自动带上之前网站保存的cookie,但是在爬虫中首次获取页面是没有携带cookie的
    • 使用无痕窗口,首次打开网站,不会带上cookie,能够观察页面的获取情况,包括对方服务器如何设置cookie在本地
      2,chrome中network的更多功能
      在这里插入图片描述

    携带请求头
    在这里插入图片描述
    在这里插入图片描述

    携带请求参数
    params 将字典或字节序列,作为参数添加到url中,get形式的参数
    data 将字典或字节序列,作为参数添加到url中,post形式的参数
    在这里插入图片描述
    response响应对象

    • response.url 响应的url:有时候响应的url和请求的url并不一致
    • response.text 响应体 str类型
    • respones.content 响应体 bytes类型
    • response.status_code 响应状态码
    • response.request.headers 响应对应的请求头
    • response.headers 响应头
    • response.request.cookies 响应对应请求的cookie
    • response.cookies 响应的cookie(经过了set-cookie动作)
    • response.json() 自动将json字符串类型的响应内容转换为python对象(dict or list)
    # -*- coding: utf-8 -*-
    import requests # 调用requests模块
    
    url = "https://www.baidu.com/s" # 目标网站url
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
    
    } #模仿浏览器UA头
    params = {
        "ie":"utf-8",
        "f":"8",
        "tn":"baidu",
        "wd":"python"
    
    }  # 携带的参数信息
    response = requests.get(url=url,params=params,headers=headers) #发起get请求获取网页源码
    print(response.text) # 打印获取到的数据  .text 表示网站源码中的str类型数据
    with open("baidu.html","w",encoding="utf-8")as f:  # 持久化存储
        f.write(response.text)
    
    

    爬取到的网站源码信息
    在这里插入图片描述
    爬取的结果展示
    在这里插入图片描述
    在这里插入图片描述
    cookie:
    - 是存储在客户端的一组键值对
    - web中的cookie典型应用免密登录
    - cookie和爬虫的关联:对一张页面进行请求的时候,如果请求的过程中不携带cookie的话,那么我们无法请求到正确的页面数据,因此cookie是爬虫中一个非常典型且常见的反爬机制。
    代码展示

    # -*- coding: utf-8 -*-
    import requests
    
    
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
        "Cookie":"_octo=GH1.1.502210902.1591416334; _ga=GA1.2.1767918695.1591416340; _device_id=8405b42c22b41f9661c91bb261f36773; user_session=A_QQWFoMfi0BySDXrcgL9xIX1kRxEMJ7Iq-J6NqRY5MRQe3H; __Host-user_session_same_site=A_QQWFoMfi0BySDXrcgL9xIX1kRxEMJ7Iq-J6NqRY5MRQe3H; logged_in=yes; dotcom_user=gemoumou; has_recent_activity=1; _gat=1; tz=Asia%2FShanghai; _gh_sess=2C%2BL%2FZjiXRtu1VCMWLaJK5z3qDteiGhOR%2F8hw5UDQusDnaKbsiQgYXX2a7w5DF%2FIeaCs45x%2FJ%2BvVWDPfHmihl%2BYZB%2FrUeUxQvQsoFkAw3sxWp9%2FcW5fzEjgxsgTp1SK91pCJZL%2BqkZ%2FjNbSg1p5CnlcLsQknfPPsyWb1udKZGjOmCO%2FsiOxHYeQh40VY2Cb4--ntjbQ3ClVbvtSvyq--zYhwrU5j4GhzntVvHo%2FoDA%3D%3D"
    } #模仿浏览器UA头
    
    url = "https://github.com/gemoumou"
    response = requests.get(url=url,headers=headers).text
    
    print(response)
    with open('github.html','w',encoding='utf-8')as f:
        f.write(response)
    
    

    未携带cookie在这里插入图片描述
    携带cookie结果
    在这里插入图片描述
    携带cookie爬取的数据展示(已登录)
    在这里插入图片描述
    自动获取cookie
    案例雪球网
    分析:1,爬取的咨询信息是动态加载的:相关更多的咨询数据是动态加载的,鼠标滚轮滑动到底部的时候会动态加载出更多咨询数据。
    2,定位到ajax请求的数据包,提取出请求url,相应数据为json形式的咨询数据。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码展示

    # -*- coding: utf-8 -*-
    import requests
    
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
    
    } #模仿浏览器UA头
    
    session = requests.Session() #创建session对象
    
    main_url = "https://xueqiu.com"
    # 第一次使用session捕获且存储cookie,猜测对雪球网首页发起请求可能会产生cookie
    session.get(main_url,headers=headers)#捕获存储cookie
    print(session.cookies)#打印实时的cookie信息
    print("_" * 20 + "分隔符" + "_"*20)
    url = "https://xueqiu.com/statuses/hot/listV2.json?since_id=-1&max_id=96837&size=15"# 定位到ajax请求数据包,提取请求url
    page_text = session.get(url=url,headers=headers).json()# 携带cookie发起请求
    print(page_text)
    
    
    
    
    
    
    

    在这里插入图片描述

  • 相关阅读:
    二维码生成:使用 JavaScript 库QRCode.js生成二维码
    VC++6.0远程调试(亲试成功)
    Linux同时安装python2和Python3
    Python打包-py2exe
    camera按键采集图像及waitKey的用法(转)
    ucos实时操作系统学习笔记——任务间通信(信号量)(转)
    STM32硬件IIC驱动设计(转)
    基于STM32F4移植W5500官方驱动库ioLibrary_Driver(转)
    USB基础知识概论(版本:v0.9.2)
    usb帧格式
  • 原文地址:https://www.cnblogs.com/gemoumou/p/13635342.html
Copyright © 2020-2023  润新知