关于爬虫网页抓取

来源:互联网 发布:东阿js复合保温模板 编辑:程序博客网 时间:2024/04/20 20:45

1. httpClient4.x以后共用一个cookie,无需再手动设置cookie.

2.   解析xml类型的文件时,用xStream来进行解析生成Javabean,如果xml中有多余的节点,而bean中没有定义,会抛出异常,通过mapperWrapper跳过不存在的属性。生成Javabean或者有Javabean生成xml时可通过注解型来进行操作,不过要开启注解才能够使用,xstream.autodetectAnnotations(true);  Auto-detectAnnotations 自动侦查注解。

3.   对于抓取httpsd的网页如果有单点登录操作的话,要禁止重定向,以便获取他的Location,对于httpclient4.3以下的版本使用

HttpParams params = httpClient.getParams();

params.setParameter(ClientPNames.HANDLE_REDIRECTS,false);来禁止重定向操作,4.3以后的版本使用HttpClientBuilder.create().disableRedirectHandling()来操作。要使用指定信用密钥和链接套接字工厂,4.3一下和4.3以后有很大的变动。

5.     对于某些网站,可能设置浏览器类型,至于符合某些浏览器才能进行网页的抓取,这时我们要进行伪装一下请求头使用。   如:HttpClientBuilder.create().setUserAgent("Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/43.0.2357.132 Safari/537.36")

6.     使用过的post 或get 请求使用后要release掉。最后 httpclient 要close掉。以免造成队列等待。

7 对于某些有验证码的网站,可以采取用OCR来破解验证码,不过有的验证码破解不易,可以改成获取抓取网页的验证码图片,手动输入获取到的验证码来进行登录。

8 对于某些网页的编码格式有的指定为 UTF-8有的指定为GB2312等,解析式如果使用EntityUtils.toString(entity, "UTF-8");或gb2312来解析的话如果做成共同的话比较麻烦,因为每次都要知道网页是何种格式,我们可以通过解析网页头meta来获取其编码集。
0 0