爬虫爬数据时,post数据乱码解决的方法
近期在写一个爬虫,目标站点是:http://zx.bjmemc.com.cn/。可能是为了防止被爬取数据,它给自身数据加了密。
用谷歌自带的抓包工具也不能捕获到数据。
于是下了Fiddler。
Fiddler的爬取结果例如以下:
可见。除了头信息之外。以下的数据信息显示成了乱码。这样就不能用程序模拟浏览器发送数据了。
解决的方法之中的一个就是获取此字符串的十六进制编码。将Fiddler切换至Hexview。例如以下图所看到的:
当中蓝色部分是header头信息,黑色字体就是传送的数据。
你还能够右键-》取消勾选show header,这样显示的便都是数据信息。
我们程序中能够将这个十六进制字符长串转化成字符串,然后发送到webserver中。
转化的程序例如以下所看到的:
public static byte[] GetByteArray(string frame)
{
byte[] buffer = new byte[frame.Length / 2]; //注意每两个十六进制字符代表一个二进制编码
for (int i = 0; i < frame.Length / 2; i++)
{
int t = GetData(frame[2 * i]) * 16 + GetData(frame[2 * i + 1]);
buffer[i] = (byte)t;
}
return buffer;
} static int GetData(char p) //获得ASCII编码
{
if (p <= '9' && p >= '0')
{
return p - '0';
}
else
{
return p - 'a' + 10;
}
}
1、先选中你要导出的十六进制字符长串-》右键-》save selected bytes-》到一文件里。 可是遇到一个问题就是,怎样将Fiddler的十六进制字符串拷贝出来,若手动抄写。非常不现实,一来太长,二来怕错。能够借助Notepad++或者UltraEdit转化过来。本人用Notepad++实验成功:
2、用Notepad++打开此文件。发现仍然是乱码
3、下载十六进制显示插件下载:HexEditor_0_9_5_UNI_dll.zip
4、解压后将HexEditor.dll文件放在Notepad++安装文件夹的plugins文件夹下,重新启动notepad++
5、再次用Notepad++打开文件。plugins->HEX-Editor->View in HEX,显演示样例如以下:

6、选中你要复制的十六进制字符串。复制。然后新建文本,粘贴,就是一个带有空格的字符串了。去除空格和换行就可以。
7、有一种高速去除空格的方法,选中一个空格,ctrl+f。切换到替换标签,然后点击替换全部button,这样将全部的空格都替换成了空字符串,也就删除了全部空格。
爬虫爬数据时,post数据乱码解决的方法的更多相关文章
- (转)MySQL 插入数据时,中文乱码问题的解决
MySQL 插入数据时,中文乱码问题的解决 原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- 关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1
关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1 ORACLE公司来培训BIEE,带了一个DEMO的DMP文件,其导出用户DBO具有DBA权限,缺省表 ...
- PHP创建文件命名中文乱码解决的方法
PHP创建文件命名中文乱码解决的方法 <pre>iconv('utf-8', 'gbk', $dir); </pre> 因为系统环境是gbk 所以里面的字符也要gbk 编码一致 ...
- MySQL 插入数据时,中文乱码问题的解决(转)
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...
- MySQL 插入数据时,中文乱码???问题的解决
在终端,mysql -u root -p 登录: show variables like 'character%'; 来查看当前数据库的相关编码集. client 为客户端使用的字符集. connec ...
- MySQL 插入数据时,中文乱码问题的解决
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...
- Java 前台后台数据传递、中文乱码解决方法
1.向前台传递数据;2.向后台传递数据;3.ajax post 提交数据到服务端时中文乱码解决方法;4.数组类型参数传递; 1.向前台传递数据:1.1 字符串数据传递: 这种方式只是单一的向前台传递 ...
- easyui datagrid 没数据时显示滚动条的解决方法
今天解决了一个bug,因为datagrid有多列,可是当没有数据的时候,后面的列无法通过滚动条拉动来显示,比较麻烦,而需求要求没有数据也要拉动滚动条查看后面有什么列,一开始在网上找了一些资料,发现都不 ...
随机推荐
- HNU 12876 Quite Good Numbers 完美数变形
筛法是一种很快的方法,贴代码纪念一下. 做法很像筛法 #include <iostream> #include <cstdio> #include <cstring> ...
- 设置UITableViewCell高度的问题
有非常多时候.UITableViewCell每行的高度是不固定的,须要动态设置. UITableView有个代理方法, -(CGFloat)tableView:(UITableView *)table ...
- OpenStack依然大行其道,可是否能等来属于自己的时代
版权声明:不论什么转载需全文转载并保留来源(微信公众号techculture)和该声明,并同一时候转载文后的二维码.否则视作侵权. OpenStack在云计算领域依然火热,甚至能够说势不可挡.这可能是 ...
- 【SICP练习】152 练习4.8
练习4-8 原文 Exercise 4.8. "Named let" is a variant of let that has the form (let <var> ...
- .ds_store是什么文件
.ds_store是什么文件 .DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini. 1,禁止.DS_store生成 ...
- oracle job有定时执行功能
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的 ...
- 5.应用与模块(ng-app)
转自:https://www.cnblogs.com/best/tag/Angular/ 自动载入启动一个AngularJS应用,声明了ng-app的元素会成为$rootScope的起点 每个HTML ...
- quartz-misfire 错失、补偿执行
调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则 misfire产生的条件是:到了该触发执行时上一个执行还未完成,且线程池 ...
- DOM操作系列-01
]常见事件: //onclick 点击时触发事件. //ondblclick 双击时触发事件. //onkeydown 按键按下 //onkeypress 点击按键 //onke ...
- pythong中的全局变量的调用和嵌套函数中变量的使用
全局变量调用:想要在自定义的函数中使用全局变量,就得要在函数用关键字global声明,然后就可以对全局变量进行修改.嵌套函数中的变量的调用:要在嵌套的变量中,使用nonlocal的声明'''num = ...