最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密。用谷歌自带的抓包工具也不能捕获到数据。于是下了Fiddler。

    Fiddler的爬取结果如下:

    可见,除了头信息之外,下面的数据信息显示成了乱码。这样就不能用程序模拟浏览器发送数据了。

    解决办法之一就是获取此字符串的十六进制编码。将Fiddler切换至Hexview,如下图所示:

    其中蓝色部分是header头信息,黑色字体就是传送的数据。你还可以右键-》取消勾选show header,这样显示的便都是数据信息。

    我们程序中可以将这个十六进制字符长串转化成字符串,然后发送到web服务器中。

    转化的程序如下所示:

[csharp] view
plain
copy

  1. public static byte[] GetByteArray(string frame)
  2. {
  3. byte[] buffer = new byte[frame.Length / 2];    //注意每两个十六进制字符代表一个二进制编码
  4. for (int i = 0; i < frame.Length / 2; i++)
  5. {
  6. int t = GetData(frame[2 * i]) * 16 + GetData(frame[2 * i + 1]);
  7. buffer[i] = (byte)t;
  8. }
  9. return buffer;
  10. }
  11. static int GetData(char p)    //获得ASCII编码
  12. {
  13. if (p <= '9' && p >= '0')
  14. {
  15. return p - '0';
  16. }
  17. else
  18. {
  19. return p - 'a' + 10;
  20. }
  21. }

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,切换到替换标签,然后点击替换所有按钮,这样将所有的空格都替换成了空字符串,也就删除了所有空格。

爬虫爬数据时,post数据乱码解决办法的更多相关文章

  1. (转)MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决  原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...

  2. 向hive上传数据时,中文乱码

    sudo -u hive hive -e "use dataplat;load data local inpath '/home/dlht/data/test/2_times.csv' ov ...

  3. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

  4. 关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1

    关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1 ORACLE公司来培训BIEE,带了一个DEMO的DMP文件,其导出用户DBO具有DBA权限,缺省表 ...

  5. Redis 3.0版本启动时出现警告的解决办法

    原文:http://m.blog.csdn.net/article/details?id=50864933 Redis 3.0.7版本启动时出现警告的解决办法 发表于2016/3/12 12:52:4 ...

  6. 使用httpclient post请求中文乱码解决办法

    使用httpclient post请求中文乱码解决办法   在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码 ...

  7. Oracle导入中文乱码解决办法

    Oracle导入中文乱码解决办法 一.确保各个客户端字符集的编码同服务器字符集编码一致 1-       确定sqlplus字符集编码,如果是windows设置环境变量. 2-       确保Sec ...

  8. uploadify上传控件中文的乱码解决办法

    uploadify上传控件中文的乱码解决办法 网站用的gb2312的编码,用uploadify上传控件上传中文时在IE能部分成功,FF,Chrome则完全失败,查找了一天原因,结果发现是页面编码问题, ...

  9. PHPmailer发送邮件时的常见问题及解决办法

    来源:http://www.chinastor.com/a/jishu/mailserver/0G392262014.html 使用PHPmailer发送邮件时的常见问题总结: 一,没有定义发送邮箱$ ...

随机推荐

  1. The Zero

    TOday is just a alpha, but there isnot 欧米伽. 编程,是你选的,是你学的,也是你喜欢的,更是你追求的.为什么要放弃塔!. 加油! 为自己. #include&l ...

  2. Java在处理大数据的时候一些小技巧

    Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名   关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ...

  3. 解决mac升级后,出现的 xcrun: error: invalid active developer path, missing xcrun 错误

    最近升级了mac系统,然后接着写代码就出问题了. 报错信息如下: xcrun: error: invalid active developer path (/Library/Developer/Com ...

  4. sql 通过表名获取所有列名

    因为要做数据迁移,也就是业务数据库的数据要迁移到历史数据库,这两个数据库理论上表结构是一样的,但因为时间原因,可能业务库升级了表结构,但历史库没有升级,且加字段的顺序不一样,导致 insert int ...

  5. Oracle 中的作业队列和队列调度

    一,启动执行作业的进程       在 Oracle 中,是使用 “作业队列协调进程(CJQ0)” 这个协调数据库实例的作业队列的后台进程,来监视作业队列中的作业表(JOB$),并启动作业队列进程(J ...

  6. win8 vs2010 openni2 配置

    打开一个新项目或者已存在的项目用以使用  OpenNI 在Visual Studio 菜单中, 打开项目菜单,选择项目属性. 在C/C++ 选项卡中, 在"常规" 下, 选择 &q ...

  7. 数学对象-Math

    Math 属性: PI        圆周率 例子:var x=Math.xxxx(); sqrt()  一个非负数的平方根    nan pow()   x的y次幂的值      Math.pow( ...

  8. final、finally、finalize的区别

    看C#知识点的时候发现的问题 1.final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为f ...

  9. modesim测试语句

    : 'd2; Reg2 <= Reg1; i <= i + 1'b1; join : 'd2; i <= i + 1'b1; join : 'd2; Reg2 <= Reg1; ...

  10. s1=s1+1与s1+=1的区别

    刚看到一面试题,题目是这样的:short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错? 初看之下就是s1=s1+1和s1+=1的区别.在开发中我们基本上是使用后一种 ...