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