PHP的curl爬虫出现乱码

事情的经过:

   up主使用PHP的curl写了一个小爬虫

   通过chomre的调试将HTTP的头部拿到,复制到了伪造的header中,大概如下: 

"content-type: application/x-www-form-urlencoded;charset=UTF-8",
"Referer:************",
"Host:***************",
"Connection: keep-alive",
"Upgrade-Insecure-Requests: 1",
"User-Agent: $user",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding: gzip, deflate, sdch",
"Accept-Language:zh-CN,zh;q=0.8,zh-HK;q=0.6",
"Cookie:*************"

 在运行抓取网页中,出现了乱码

 up主已经将php文件,curl设置为utf8编码,被抓取的网页也是utf8

 逐个排查,终于发现了是它  "Accept-Encoding: gzip, deflate, sdch"

 Accept-Encoding,HTTP Header中Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型


gzip解释:

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。


这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%


这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载。


服务器返回的是压缩后的数据,而现在我的跑得程序却没有对这些数据进行解压缩,这样得到的当然是一堆乱码了。

      


  解决办法:

注释掉"Accept-Encoding: gzip, deflate, sdch" ,服务器直接返回文本,爬虫开始开心的跑了起来!


  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值