HttpClient实现爬虫相关简述

爬虫基本概念
1、ip代理

2、httpclient线程池

3、广度优先【深度优先】

4、多线程爬取/单线程爬取

参考框架webmagic

 

自定义针对特色网站爬虫:

1、httpclient参数设置

2、请求头head设置

3、request请求参数设置

4、用户名密码登陆设置以及session

 

HttpClient参数设置

httpclient连接池Timeout waiting for connection  合理设置一下三个参数

defaultMaxPerRoute(每个路由(route)最大连接数 )

maxTotal(最大连接数)

connectionRequestTimeout(从连接池中获取到连接的最长时间 )

注意三个超时时间connectTimeout 创建链接超时时间  connectionRequestTimeout 从连接池中获取到连接的最长时间

特别注意socketTimeout:数据传输的最长时间,指的是没有数据传输时毫秒数报错,如果是一个下载的大文件存在安全隐患一直无法执行完成,并且线程池会占用很大的带宽。可尝试在response返回头中进行筛选,不要这种东西。

以及设置ip代理的三种方式---

 

我的策略

广度优先解析:仿照wget,取url判断层级,一层通过httpclient直接下载生成index.html,二层通过httpclient得到内容生成文件,再解析内容,下载需要的html、css、js、img等。三层解析二层的html,下载需要的html、css、js、img等,依次类推。

 

20170323更新,除了ip代理之外其他都已经实现,层级爬取。

解析使用htmlpaser,适合用来做层级爬取以及一些简单的信息

后期打算追加jsoup方式,jsoup适合解析指定table下面的一行行信息,按照一定的规则得到数据,然后按照一定规则进行分类。

 

爬取网络信息主要在于解析爬取规则。jsoup和htmlparser适用于不同情况的爬取。

较为通用的信息爬取平台 可以将jsonp的规则包装以后设置在页面上形成自动化的解析。

但是:针对不同网站的爬取策略和破解反爬虫策略才是无法通用的难点

按页爬取时,如果在参数信息中包含页面大小可以调整来尝试减少爬取次数。

基本的反爬取策略:传入请求参数、传入请求头可以爬取成功。

有些需要在请求头中传入Cookie才能爬取,Cookie有时候可以获取到有时候很难找到获取cookie的有效途径。

有些情况下cookie如何和请求参数匹配才能爬取成功。

还有的网页会在爬取页面时传递token,然后再通过token get到信息,token一次有效,这个需要注意下。

 

未解决问题:有些ssl3在windows上可以正常爬取,linux机器上就会报错。【存在安全隐患,被linux系统封了】

比较好的一篇文章:http://www.cnblogs.com/Lands-ljk/p/5673017.html
 

网络工具

爬取时会造成网络异常,半连接工具、洪水攻击等情况,需要一些工具辅助

iptraf 和nload监控网络还有iftop

iftop:目标 源地址 进出速度

nload:in/com 网卡进出速度。

iptraf 种类多种多样。

nload安装地址:http://www.cnblogs.com/kgdxpr/p/3311507.html

iftop安装地址:http://blog.sina.com.cn/s/blog_61c07ac50101gm21.html

 

问题

爬取的url中存在空格http://www.leiphone.com/tag/Windows 9

解决方式encode = URLEncoder.encode(" ","utf-8"); url.replace(" ", encode)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值