返回信息流信息检索与信息抽取的选修课让做的,参考了网上的一位博主的实现,先把链接帖出来以示感谢。
http://www.kgblog.net/2009/04/25/pythonSpider.html
修改的部分主要是:
1.入口的url(beginurl),抓取网页数目、保存地址由程序写死改为了命令行参数输入
usage: ./TinySpider.py beginurl nums dir
2.设置了抓取网页的超时时间(写死了2秒)
3.对由于读取网页时间过长产生的异常进行处理
4.对html的解析由HTMLParser改为了正则表达式直接匹配,两个原因
一是觉得正则效率可以高一些;二是我实在没看懂HTMLParser这个模块咋用,炯
5.增加了beginurl站内地址的优先级,在优先级部分考虑了url地址的层次,由于只要静态网页,所以只读取http ftp file三种打头的url.
这个版本大概就这么多。
由于本人对多线程有些不可名状的抵触情绪,所以多线程的部分就不做了,争取下周上课前加入一个多进程的调度部分,这样即使一台机器也可以协同运行多个爬虫,感觉比多线程实现起来要踏实些。
由于python代码帖出来估计就没法看了,所以上传附件大家要是有兴趣可以下下来运行一下。
附件(2.5KB) TinySpider.py
附件(1.3KB) Utility.py
这是一条镜像帖。来源:北邮人论坛 / soft-design / #36274同步于 2009/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
python写的爬虫程序
m6
2009/10/29镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
附送10行图片处理代码,望结合使用。
[QUOTE]
import sys, Image
img = Image.open(sys.argv[1]).convert('YCbCr')
w, h = img.size
data = img.getdata()
cnt = 0
for i, ycbcr in enumerate(data):
y, cb, cr = ycbcr
if 86 <= cb <= 117 and 140 <= cr <= 168:
cnt += 1
print '%s %s a porn image.'%(sys.argv[1], 'is' if cnt > w * h * 0.3 else 'is not')
[/QUOTE]
参考:http://blog.csdn.net/lanphaday/archive/2008/10/28/3166735.aspx
【 在 m6 的大作中提到: 】
: 信息检索与信息抽取的选修课让做的,参考了网上的一位博主的实现,先把链接帖出来以示感谢。
: http://www.kgblog.net/2009/04/25/pythonSpider.html
: 修改的部分主要是:
: ...................
参考下larbin的设计,也许会更好,python的urllib过于强大,可写的除了保存任务队列和去重的hashtable之外,ms也不多了,多线程简单些可以和任务队列合并起来,复杂些就自己在线程中维护socket连接,主线程里epoll_wait吧。。。当然,单线程并不意味着效率低下。。。
python真优美。。。
HTMLParser是SAX方式处理,照说效率应该比正则高.不过那玩意儿不怎么robust,经常被各种烂html干掉.
【 在 m6 的大作中提到: 】
: 信息检索与信息抽取的选修课让做的,参考了网上的一位博主的实现,先把链接帖出来以示感谢。
: http://www.kgblog.net/2009/04/25/pythonSpider.html
: 修改的部分主要是:
: ...................