爬虫爬的数据乱码 java_爬虫爬数据时,post数据乱码解决办法

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

Fiddler的爬取结果如下:

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

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

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

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

转化的程序如下所示:

publicstaticbyte[] GetByteArray(stringframe)

{

byte[] buffer =newbyte[frame.Length / 2];//注意每两个十六进制字符代表一个二进制编码

for(inti = 0; i 

{

intt = GetData(frame[2 * i]) * 16 + GetData(frame[2 * i + 1]);

buffer[i] = (byte)t;

}

returnbuffer;

}

staticintGetData(charp)//获得ASCII编码

{

if(p <='9'&& p >='0')

{

returnp -'0';

}

else

{

returnp -'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,显示如下:

14087291555368.png

6、选中你要复制的十六进制字符串,复制,然后新建文本,粘贴,就是一个带有空格的字符串了。去除空格和换行即可。

7、有一种快速去除空格的方法,选中一个空格,ctrl+f,切换到替换标签,然后点击替换所有按钮,这样将所有的空格都替换成了空字符串,也就删除了所有空格。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果爬虫获取的数据乱码,可以尝试以下方法: 1. 确认爬虫获取的数据的编码方式是否正确,常见的编码方式包括UTF-8、GB2312等。可以使用Python自带的chardet库来检测编码方式,并将数据按照正确的编码方式解码。 2. 如果数据本身就是乱码,可能是因为网站使用了反爬虫技术,可以尝试使用代理IP或者更换请求头来规避反爬虫策略。 3. 如果数据中包含了特殊字符,可以尝试使用正则表达式或者字符串处理函数来进行清洗和提取。 4. 如果以上方法均无效,可以考虑联系网站管理员或者寻找其他数据源。 ### 回答2: 如果爬虫获取的数据乱码,可以考虑以下几个解决办法: 1. 设置合适的编码方式:爬虫在请求网页,可以在HTTP请求的header中指定编码方式,例如UTF-8或者GBK等,尝试使用不同的编码方式来获取网页内容,看看是否能够正确解析数据。 2. 转换编码:如果爬虫已经获取到了乱码数据,可以尝试使用不同的编码方式进行转换。一种常见的方法是使用Python的encode和decode方法,尝试将数据从原先的编码方式转换为目标编码方式。 3. 使用合适的解析库:如果数据仍然是乱码,可能是因为选择了不合适的解析库。可以尝试使用更加专业的解析库,例如Beautiful Soup或者lxml,这些库通常具有更好的编码处理能力。 4. 检查网页内容:乱码的原因可能是网页本身编码混乱或者不规范,可以先检查网页源代码中是否有指定正确的编码方式,例如<meta>标签中的charset属性。如果网页编码被正确指定,则修改爬虫代码以正确解析数据。 5. 清洗数据:在爬虫获取到数据后,可以对数据进行清洗和过滤,去除包含乱码的部分。可以使用正则表达式等方法匹配和删除乱码字符。 综上所述,爬虫获取的数据乱码,可以尝试设置合适的编码方式、转换编码、使用专业的解析库、检查网页内容和清洗数据等方法来解决问题。 ### 回答3: 爬虫获取的数据乱码在实际开发中是一个比较常见的问题。造成数据乱码的原因可能是编码设置错误、网页编码不一致或是被压缩加密等。以下是解决数据乱码问题的一些方法: 1. 设置正确的编码:可以通过设置请求的编码方式,使之与被请求的网页编码一致。常见的编码方式有UTF-8、GBK等。通过设置合适的编码方式,爬虫获取的数据就可以正确解码显示。 2. 使用适当的解码库:在处理解码问题,可以借助一些库来解决。例如,在Python中,可以使用chardet库来检测文本的编码格式,并且使用相应的解码方式进行解码。 3. 处理特殊字符:有些网页中可能会存在一些特殊字符,导致解码出现乱码。可以使用正则表达式等方法,将这些特殊字符进行替换或删除,从而得到正确的数据。 4. 使用代理服务器:有的网站可能会对爬虫进行反爬虫策略,并进行数据加密或压缩,导致获取到的数据乱码。可以使用代理服务器,通过改变请求的来源IP地址,来规避这些限制。 5. 调整爬虫速度:有候,过快的取速度也可能导致获取到的数据乱码。可以适当调整爬虫的速度,降低请求频率,以减少服务器负载,从而得到正确的数据。 总结来说,解决爬虫获取到的数据乱码问题需要确定正确的编码方式,使用合适的解码库,处理特殊字符,使用代理服务器以及调整爬虫速度等方法。根据具体情况采取不同的解决方案,可以有效解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值