Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367698
  • 博文数量: 150
  • 博客积分: 3423
  • 博客等级: 中校
  • 技术积分: 1005
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-15 09:04
文章分类

全部博文(150)

文章存档

2012年(2)

2011年(148)

分类: Python/Ruby

2011-09-15 21:53:14

1、 健壮性。网络不稳定,网页格式有问题,这些情况都是会发生的。当发生了这些情况是,爬虫不能抛出异常,而后退出,应该做适当的异常处理。

2、 使用多线程下载技术。否则,一个一个也没下载,使用单线程,在爬取页面上浪费的时间会非常之多。

3、持久化问题。包括页面下载的持久化,还有链接的持久化问题。可以分批下载,使用文件存储,或者使用数据库存储,使用sqlite应该会是 一个比较好的选择。

4、登陆需要Cookie的情形需要加以解决。如何发送完全自己定制的HTTP请求呢?

5、解决爬虫的队列保存问题。如果一次没有下载完,则下次可以接着下载。维护两个列表? 已完成列表和未完成列表?

6、代码重用问题。可以把一些通用的东西提取出来,放在一个类中。以什么方式组织最为合理?

7、调用一个带多线程执行的方法时,线程的同步有一些问题。本来想加锁或互斥量,但最终没有解决问题。现在的解决方法,是在那个多线程执行的方法中,先把所有的 线程创建好, 再统一启动,启动完毕后,循环使用join方法,这样只有当所有线程结束时,方法调用才会结束。(如果逐个来执行start, 再调用join方法,也出现过问题,最后,启动的是 第一个线程,而所有其他线程会在第一个线程退出后才进入,这样就不是并发执行了。。。why?)

8、并发粒度的控制。单个任务内并发。或者采用多任务并发,任务内部又有并发呢?
分布式并发? (这种分布式框架还没有开始搞。 最后甚至可以搞成P2P的爬取模型)

9、自适应并发。对一个 没有检测连接频率次数,或连接模式的网站来说。可以 自适应地调高下载并发数,取得最高的下载速度。 而对有下载检测的网站,则可以采用 保守下载策略。 如休眠时间的自适应调整。

10、可是考虑开始使用Jython, 以后在普通机子上,使用一个脚本就可以完成一切了。总体的部署文件很少。 而安装一个Python,需要的时间至少是 4M。


Python编程中遇到了一些新的问题:

1、re.findall(pattern, string)如果存在跨行的,就不能匹配了。 可以把后面的可选参数加入 re.findall(pattern, string, re.S). re.S是一个常量。加入之后,就可以匹配多行的内容了。 再次强调.*会匹配尽量多的内容,而.*?会匹配尽量少的内容。

2、Python正则表达式中要表示反斜杠,必须使用

阅读(2009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~