httpclient爬数据遇到的坑

 

 https://blog.csdn.net/persistencegoing/article/details/84376427

我爬了很多保险公司的数据,爬虫写多了经常遇到一些很恶心的坑.

 1常见的就是如果httpPost = new HttpPost(url)报错

一般都是你的url格式的错误,比如最常见的空格问题,好好检查格式,在index   XXX  会提示你在某个位置的错误.

 

 

2org.apache.http.client.ClientProtocolException异常

  Client的协议异常,我出这个错误的时候是因为url有需要编码的参数,但是我把整个url路径都给编码了,client无法识别这个路径问题

 

3url中的空格编码问题

  

一般可以这样,把空格转为+,但是我在爬XX保险系统的时候,转义成+不行,下面我就分享一下我的解决方案

将空格转为%20,下面是代码

public static String replaceSpace(StringBuffer str) {
    int spacenum = 0;//spacenum为计算空格数
    for(int i=0;i=0 && indexold

 

4今天遇到一个时间的问题,很TM贱

get请求方式中参数+一个日期对象,日期对象是Thu Nov 29 16:53:25 UTC+0800 2018,这个日期对象还有空格,而且该对象加了时区.以下是转换代码

public static String dateTransfer(Date time){
    SimpleDateFormat sdf=new SimpleDateFormat("EEE MMM dd HH:mm:ss 'UTC'Z yyyy",Locale.US);
    try{
        return sdf.format(time);
    }catch(Exception e){
        e.printStackTrace();
        return null;
    }
}

 

5在写爬虫的时候,一定要注意请求是get还是post,是utf-8还是GBK

 

6对于参数一定要注意细节,在某些时候0和0.0都是有很大的区别的,一个小数点可能你得到的是500

 

7注意网页中的标记NO,你在请求的时候可能会有一些莫名的参数,而这个参数可能来自于网页,注意分析

 

8分析每次请求的逻辑,逻辑顺序不清楚,会导致某些参数你不清楚是哪儿来的

 

9在写爬虫的时候最重要的就是耐心,爬虫着重逻辑,没有耐心的人千万不要尝试爬虫,因为还未开始就可能结束

 

10注意请求状态码,请求得到的是200,400,404还是500,如果是302,解析html,得到新的url再请求.

 

11很多项目中会涉及你的IP,浏览器类型和版本,还有你爬的频率,多学习爬虫技术和反爬的技术才能走的更远.

 

 

希望大家关注我一波,防止以后迷路,有需要的可以加群讨论互相学习java ,学习路线探讨,经验分享与java求职    群号:721515304

你可能感兴趣的:(爬数据)