当前位置: 首页 > article >正文

爬虫系统学习3——chrome分析post与json

目录

  • 1、寻找post地址
      • (1)找到js位置——用选择工具选择有js事件的按钮,在事件监听器中跳转到对应的 js 文件
      • (1)找到js位置——search all files
      • (2)当遇到不清楚的js操作时,都可以在console 里进行尝试
      • (3)js添加断点debug
      • (4)总结1——寻找登录的post地址
      • (5)总结2——定位想要的js
  • 2、requests 小技巧
    • (1)cookie对象转化为字典 或 字典转化为cookie对象
    • (2)url 解码 、 编码
    • (3)请求 SSL 证书验证
    • (4)设置超时参数timeout、配合状态码判断是否请求成功 assert、retry装饰器

1、寻找post地址

post_data字典中的键是 input 标签下 name 属性对应的值
在这里插入图片描述

(1)找到js位置——用选择工具选择有js事件的按钮,在事件监听器中跳转到对应的 js 文件

在这里插入图片描述

(1)找到js位置——search all files

在这里插入图片描述

(2)当遇到不清楚的js操作时,都可以在console 里进行尝试

在这里插入图片描述

(3)js添加断点debug

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)总结1——寻找登录的post地址

  • 在form表单中寻找action对应的url地址
    • post的数据是input标签中name的值作为键,真正的用户名密码作为值的字典,post的url地址就是action对应的url地址
  • 抓包,寻找登录的url地址
    • 勾选perserve log按钮,防止页面跳转找不到url
    • 寻找post数据,确定参数
      • 参数不会变,直接用,比如密码不是动态加密的时候参数会变
      • 参数会变
        • 参数在当前的响应中
        • 通过js生成

(5)总结2——定位想要的js

  • 选择会触发js时间的按钮,点击event listener,找到is的位置
  • 通过chrome中的search all file来搜索url中关键字
  • 添加断点的方式来查看js的操作,通过python来进行同样的操作

2、requests 小技巧

(1)cookie对象转化为字典 或 字典转化为cookie对象

import requests
r = requests.get('http://www.baidu.com')
# 将 cookie 转化为 字典
print(r.cookies)
print()
res=requests.utils.dict_from_cookiejar(r.cookies)
print(res)
# 将字典转化为 cookie (会有信息缺失)
res_cook = requests.utils.cookiejar_from_dict(res)
print()
print(res_cook)

(2)url 解码 、 编码

print(requests.utils.unquote('http%3a%2f%2fwww.baidu.com'))
print(requests.utils.quote('http://baidu.com'))

在这里插入图片描述

在这里插入图片描述

(3)请求 SSL 证书验证

出现 SSLERROR

requests.get(url,verify=False)

(4)设置超时参数timeout、配合状态码判断是否请求成功 assert、retry装饰器

from retrying import retry
import requests
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'}
@retry(stop_max_attempt_number=3)# 下面的程序允许报错三次,超过三次整个程序报错
def _parse_url(url,method,data):
    print("*"*20)# 判断程序执行次数
    if method=='POST':
        r =requests.post(url,headers=headers,data=data)
    else:
        r = requests.get(url,headers=headers,timeout=3)
    assert r.status_code==200
    return r.content.decode()

def parse_url(url,method='GET',data=None):
    try:
        html_str=_parse_url(url,method,data)
    except:
        html_str=None
    return html_str

if __name__=='__main__':
    print(parse_url('www.baidu.com'))


在这里插入图片描述


http://www.kler.cn/a/418428.html

相关文章:

  • Java设计模式——职责链模式:解锁高效灵活的请求处理之道
  • 【插入排序】:直接插入排序、二分插入排序、shell排序
  • Linux设置开启启动脚本
  • 202页MES项目需求方案深入解读,学习MES系统设计规划
  • 【Vue3】从零开始创建一个VUE项目
  • 网络安全法
  • 基于深度学习的卷积神经网络十二生肖图像识别系统(PyQt5界面+数据集+训练代码)
  • 如何手搓一个智能宠物喂食器
  • 网络协议(TCP/IP模型)
  • GEE案例——基于Landsat 8 C02数据的LST地表温度计算和下载(筛选制定温度范围的影像下载)
  • Java开发每日一课:Java开发岗位要求
  • HTMLHTML5革命:构建现代网页的终极指南 - 2. HTMLHTML5H5的区别
  • 农业强国助农平台:开启2025年助农新篇章
  • 【MySQL】:索引
  • 鸿蒙NEXT元服务:论如何免费快速上架作品
  • 个人信息修改昵称
  • PMP–一、二、三模、冲刺–分类–8.质量管理
  • GRU模型:原理、实现与分析
  • LeetCode—74. 搜索二维矩阵(中等)
  • 【Go - 什么有序?解密MongoDB bson.D】
  • 用php 处理 xls和xlsx (简单版)
  • 【JavaEE 初阶】⽹络原理 - 初识
  • 组播基础实验
  • FRU文件
  • python7学习笔记-循环、迭代、pass
  • 开源 - Ideal库 - Excel帮助类,TableHelper实现(三)