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 requestsheaders = {"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).textprint(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 requestsheaders = {"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)

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

  1. Python爬虫requests模块在线生成请求头

    写爬虫的时候,请求头几乎是必写的,但是写起来有点繁琐,虽然不难,但是麻烦,所以这时候,一个自动生成请求头的方法就显得很重要了 在线生成请求头 https://curlconverter.com/ 使用 ...

  2. Python接口自动化-requests模块之post请求

    ------·今天距2021年262天·------ 这是ITester软件测试小栈第111次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化-requests模块之get请求 ...

  3. 爬虫之requests模块发送post请求

    爬虫之requests模块发送post请求 思考:哪些地方我们会用到POST请求? 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息) 需要传输大文 ...

  4. Python中通过requests模块发送POST请求.

    博客核心内容: 1.Python中通过requests模块发送POST请求. 我们通常情况下提交数据一般有两种方式:Ajax和Form表单的方式 如果request.post里面没有值,我们就到req ...

  5. axios 登录后设置header,vue+axios 全局添加请求头和参数操作

    vue+axios 全局添加请求头和参数操作 走登录的接口都会返回一个 token 值, 然后存起来方便之后调接口的时候给后台传过去, 传给后台的方式有两种:(具体使用哪种需要和后台商量) 1, 放在 ...

  6. ios请求头解决参数中文乱码_花了一天时间就解决了一个的请求头传参参数格式bug...

    一天的时间就解决了一个bug就这么过去了,但不能让他就这么过去了,加班要加的有价值,所以现在记录一下这一天的经历,以防下次再踩坑 大致说下我的情况,入坑的不久的前端新手,在做一个项目的重构,用的框架式 ...

  7. HTTP 请求头各参数具体含义

    HTTP 请求头各参数具体含义 HTTP的头域包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头部:是客户端和服务器都可以使用的头部,可以在客户端.服 ...

  8. python使用 requests 模块发送http请求

    request 模块可以帮助我们发起http请求 步骤: 1.首先import 下 request 模块 2.然后看请求的方式,选择对应的请求方法 3.接受返回的报文信息 get 方法 (1)get请 ...

  9. 使用 python requests 模块发送 http 请求及接收响应

    内容概要 如何构建GET 与 POST request 请求消息 对 request 的header , query string, message body 定制化 http header参数 co ...

最新文章

  1. C#注解属性的感想一:
  2. oracle的用户自定义异常
  3. 怎样成为一名更优秀的程序员?我总结出 7 条建议,希望对你们有帮助!
  4. 微信“拍一拍”新增“炸一炸”功能;爱奇艺 CEO:会费涨价是行业必然趋势;微软终止 Windows 10X 开发|极客头条...
  5. Python非本地语句
  6. python写个验证码
  7. ServletContextListener小小总结
  8. centos7快速搭建KMS服务器
  9. python图形包是什么_介绍Python 图形计算工具包
  10. 03、订单商品信息表.sql
  11. 罗德里格旋转公式推导
  12. 数电实验_时分秒计数器——终极版
  13. HTML显示磁盘容量,导致:IOError:[Errno 28]设备上没有剩余空间:磁盘上有很多空间的’../results/32766.html’...
  14. Tridium公司的Niagara N4 使用
  15. uni-app中Card slots的使用(添加点击事件)(uni-card)
  16. 区块链开发(十四)以太坊go-ethereum客户端查询交易列表探讨
  17. 用matlab读csv数据_Matlab读取csv文件csvread函数的使用
  18. 网络(十三)之ACL的高级应用
  19. Mybatis学习总结(结合个人理解)
  20. matlab audioread函数用法,Matlab读取写入合成音频信号audioread audiowrite 函数使用方法...

热门文章

  1. mysql eager mode_MySQL Connector Net 6.6.5 Entity Framework 显式预加载 Eager Load Bug
  2. springboot整合jdbc
  3. 学计算机cpu重要还是显卡重要,玩游戏的过程中究竟是显卡重要还是CPU重要?
  4. java注解和python装饰器_Java 的注解 和 Python 的装饰器 是一回事吗?
  5. eclipse CTRL+F Find/Replace使用正则表达式
  6. 【excel】日期函数DateDif
  7. linux 利用yum源安装mysql5.7
  8. python爬取素材图片代码_基于Python爬取素材网站音频文件
  9. 验证哥德巴赫猜想c语言算法,验证哥德巴赫猜想的简单优化
  10. php数据库缓存服务器配置,php缓存技术(减少数据库服务器压力)