zoukankan      html  css  js  c++  java
  • 爬虫爬数据时,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,这样将全部的空格都替换成了空字符串,也就删除了全部空格。

  • 相关阅读:
    使用 VBRichClient 库
    提取文件夹目录的办法
    编程语言转换
    解决linux服务器上matplotlib中文显示乱码问题
    动态规划 53:Maximum Subarray,152:Maximum Subarray,266. Palindrome Permutation 回文全排列
    动态规划:494,576
    ResourceExhaustedError 解决方案
    周赛138场
    leetcode 115
    leetcode 372
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6972515.html
Copyright © 2011-2022 走看看