近期个人爬虫写完了-.-没有足够的资源(服务器,带宽)来跑.so这个项目暂放一下先找工做了. css
简单说下后面的内容要点.
定制webkit:
1,主要做用是:支持js,另可快速解析被hide了的干扰元素(页面中的非显示内容).这点用webpage的toPlainText便可...优化方面:1,缓存webkit进程实例.2,经过一些比较hack的方法,把css给禁了(定制manager.createRequest).3,其余一些配置项.例如webkit开启preferNetwork来支持标准的http cache...主要就这几个了... web
2,scrapy自己的优化方面:
scrapy自己不少东西优化(例如dnscache)都是已经完成了的,请先仔细阅读文档,必要时源码.业务相关的部分,建议注意正则解析速率(可采起先写逻辑大体提取后再正则).解析写的很差会致使cpu占用高(若没法优化.考虑解析和爬取彻底分离是否可行).这些都是具体状况具体处理了.
说下scrapy框架的优化.
1,scrapy使用短链接.可以使用requests+scrapy.utils里面的deferinthread快速patch成长链接,但deferinthread用到了线程池,所以网络方面改善了但调度方面变差了(由twisted异步变为线程池).请评估.有时间我会给scrapy写个长连接支持,在twisted基础上.
2,考虑给scrapy实现标准的http cache,也可经过代理服务器快速patch一个http cache(无需改动代码).看具体状况了. 算法
3,scrapy的一些细节:
同上scrapy不少细节也替你作了(例如url规范化),请先仔细阅读文档,必要时源码.其余一些细节
1,default_headers,添加host头,不然会致使部分虚拟空间没法访问
2,连接解析中,a tag的href,写rule中的ProcessLink,记得strip,有些网站有相似以下的<a href=' xxxx'>前面有个空格,会致使scrapy的连接解析错误(但浏览器访问正常)
3,是否要支持iframe.即写连接解析时考虑iframe元素处理
4,etc...略想不起来...
4,架构,运行监控方面:
这个跟具体状况有关...简单说下,你要考虑spider如何写,是否多crawler...crawler和spider的对应关系...通常状况你不须要考虑这个问题(绝大多数都是crawler,spider一对一). 浏览器
其余...etc...回想中... 缓存
后续我又看了不少有趣的spider trap-.-不过突破防爬取不会被说起.
也弄了下gevent-.-结论是除非你清楚你在干啥...不然仍是用scrapy吧...
正在学习爬虫相关的算法中... 服务器
-.-系列文先暂停在此了...
网络