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

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景:传统的爬虫只需要设置fetch_type=js即可,因为可以获取到整个页面。但是现在ajax应用越来越广泛,所以有的网页不能用此种爬虫类型来获取页面的数据,只能用slef.crawl()来发起http请求来抓取数据。

直接上例子:
可以看到,该网页的每一页的数据是通过ajax请求获取到的,方式为POST,所以不能用传统方法。
在这里插入图片描述

可以看到该请求的请求体,我们需要把请求体和请求方法写到crawl函数的参数里。
在这里插入图片描述

直接上代码:

# coding: utf-8
from pyspider.libs.base_handler import *class Handler(BaseHandler):@every(minutes=10)def on_start(self):data = {'channelid': 229105,'sortfield': '-docorderpri,-docreltime','classsql': 'chnlid=40078','classcol': 'publishyear','classnum': 100,'classsort': 0,'cache': 'true','page': 1,'prepage': 75,}save = {'req_body':data}# method指定POST,data指定请求体,save保存一些自定义字段。self.crawl('http://yjt.fujian.gov.cn/fjdzapp/search', callback=self.index_page, method="POST", data=data, save=save)# 抓取请求的响应数据后会调用此接口@config(age=10*60)def index_page(self, response):print(response.save['req_body']) # 查看请求体print(response.json) # 获取所抓到的数据return response.jsondef on_result(self, result):# 处理结果 ...

请求体和响应如下:
在这里插入图片描述

需要注意的地方

可以看到,字典的字段都是u'...',这表明是Unicode编码,所以想要获取字典中的字段,需要做下面的处理:

response字典中有个recordCount的key,我想获取他的值,需要将其先按照utf-8的编码方式解码为Unicode(python2默认Unicode编码,但是我们的脚本是utf-8的编码方式),这样就可以获取到字典的值啦

	recordCount = response.json.get('recordCount'.decode('utf-8'))

相关文章:

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景:传统的爬虫只需要设置fetch_typejs即可,因为可以获取到整个页面。但是现在ajax应用越来越广泛,所以有的网页不能用此种爬虫类型来获取页面的数据,只能用slef.crawl()来发起http请求来抓取数据。 直接上例子: 可以…...

torch.cumprod实现累乘计算

cumprod取自“cumulative product”的缩写,即“累计乘法”。 数学公式为: y i x 1 x 2 x 3 . . . x i y_ix_1\times{x_2}\times{x_3}\times{...}\times{x_i} yi​x1​x2​x3​...xi​ 官方链接:torch.cumprod 用法: impo…...

设计模式之迭代器模式

什么是迭代器模式 迭代器模式(Iterator pattern)是一种对象行为型设计模式,它提供了一种方法来顺序访问聚合对象中的元素,而又不暴露该对象的内部表示,同时也可以将迭代逻辑与聚合对象的实现分离,增强了代码…...

使用SSH ,让windows和linux互通

简介 SSH 是一种安全网络协议,旨在让客户端和服务器之间进行安全的数据传输。SSH 的核心思想是利用公钥加密技术和共享密钥加密技术相结合的方式,使客户端和服务器之间建立起安全的连接。 当客户端发起连接请求时,服务器会对客户端进行身份验…...

常用设计模式——策略模式

策略模式是什么 策略模式(Strategy):针对一组算法,将每一个算法封装起来,从而使得它们可以相互替换。 比如我们一个软件的会员等级,每一个等级都会有对应的一些等级权益,那么每一个等级权益就…...

牛客网 CM11.链表分割

目录 1.解题思路2.代码实现 1.解题思路 此题目思路相对简单,利用双指针,一个指针指向小于val的,一个指针指向大于等于val的,但实现起来,如果仅仅使用单链表,那么还需特别判断第一个指针是否为空从而特意做…...

[iOS开发]iOS中TabBar中间按钮凸起的实现

在日常使用app的过程中,经常能看到人家实现了底部分栏控制器的中间按钮凸起的效果,那么这是怎么实现的呢? 效果演示: 实现原理: 创建按钮 创建一个UITabBar的子类,重写它的layoutSubviews方法&#xff1…...

数字时代,企业的数据共享意味着什么?

随着数字化整体在社会方方面面的推进,通过数据直接或间接创造的价值越来越大,逐渐成为了构建现代社会的重要要素。而对于企业来说,数据也是在数字经济中容易接触也切实能够利用产生大量价值,所以如何最大化利用数据,让…...

壹[1],QT自定义控件创建(QtDesigner)

1,环境 Qt 5.14.2 VS2022 原因:厌烦了控件提升的繁琐设置,且看不到界面预览显示。 2,QT制作自定义控件 2.1,New/其他项目/Qt4 设计师自定义控件 2.2,设置项目名称 2.3,设置 2.4,设…...

解决Java对接LDAP AD域登录出现Unprocessed Continuation Reference(s)错误

出现该错误的原因,主要是因为Java namingx的库,默认选项是未设置跟随,389返回的是AD域条目的引用,需要进行引用跟随。 解决方法分为两种,第一类不使用全局目录服务的端口389和636,而是使用真实端口 把代码…...

could not read ok from ADB Server

执行adb devices提示 List of devices attached * daemon not running; starting now at tcp:5037 could not read ok from ADB Server * failed to start daemon 方法1,关闭防火墙, could not read ok from ADB Server_夜星辰2023的博客-CSDN博客 我…...

超越基础:Flutter 中 onTap 的 5 条规则让你脱颖而出

小事情决定了你的熟练程度,这些小细节的有趣之处在于它们的丰富性。您将在代码库中的数百个位置遇到 onTap 事件。增强它们可以对代码的可维护性和最终用户体验产生重大的积极影响。 onTap 就是这样一个微小但丰富的东西——我们在每个屏幕上都使用它。这纯粹是关于…...

综合布线可视化管理系统价值分析

传统综合布线管理,全部依靠手工登记,利用标签标示线缆,利用文档资料记录链路的连接和变更,高度依赖网络管理员的管理能力,维护效率低下。同时,网络接入故障和非法接入难以及时发现。在以往的文章中小编一直…...

【JavaSE】基础笔记 - 类和对象(上)

目录 1、面向对象的初步认知 1.1、什么是面向对象 1.2、面向对象与面向过程 2. 类定义和使用 2.1、简单认识类 2.2、类的定义格式 2.3、自定义类举例说明 2.3.1、定义一个狗类 2.3.2、定义一个学生类 3、类的实例化 3.1、什么是实例化 3.2、类和对象的说明 1、面向…...

浅谈开口互感器在越南美的工业云系统中的应用

摘 要:分析低压开口式电流互感器的原理,结合工程实例分析开口电流互感器在低压配电系统中,主要是改造项目中的应用及施工细节,为用户快速实现智能配电提供解决方案,该方案具有成本低、投资少、安装接线简便等优点&…...

docker的使用以及注意事项

ssh的登录 1.登录ssh ssh 用户名IP地址 2.生成密钥 ssh-keygen生成密钥,在.ssh文件夹中(如果没有自己生成一个) 如果密钥之前已经生成过,可能在配置git的时候,会报错:这个密钥已经使用过的报错 解决方法是:otherwise[…...

大数据之LibrA数据库系统告警处理(ALM-12027 主机PID使用率超过阈值)

告警解释 系统每30秒周期性检测PID使用率,并把实际PID使用率和阈值进行比较,PID使用率默认提供一个阈值。当检测到PID使用率超出阈值时产生该告警。 平滑次数为1,主机PID使用率小于或等于阈值时,告警恢复;平滑次数大…...

软考 系统架构设计师系列知识点之数字孪生体(3)

接前一篇文章:软考 系统架构设计师系列知识点之数字孪生体(2) 所属章节: 第11章. 未来信息综合技术 第5节. 数字孪生体技术概述 3. 数字孪生体的关键技术 建模、仿真和基于数据融合的数字线程是数字孪生体的三项核心技术。能够做…...

新闻稿的写作注意事项!纯干货

新闻稿是企业、机构、政府等组织向公众传递信息的重要途径之一,也是媒体获取新闻素材的主要来源。一篇优质的新聞稿不仅可以吸引读者的注意力,还可以提高组织的形象和声誉。因此写好新闻稿至关重要。下面伯乐网络传媒来给大家探讨一些新闻稿写作的注意事…...

Android开发知识学习——从Retrofit原理来看HTTP

文章目录 Retrofit 使用方法简介Retrofit 源码结构总结扔物线读源码的思路与方式 Retrofit 使用方法简介 导包 implementation com.squareup.retrofit2:retrofit:最新版本创建一个 interface 作为 Web Service 的请求集合,在里面用注解 (Annotation&…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...