爬虫违反了新浪微博的使用协议吗

写个关于这两天微博爬虫的感受。前一段时间看到了一本陈儒的《python源码剖析》之后,如醍醐灌顶。以前我用C写了一个很简单的矩阵运算Matlab模拟小程序,没有涉及语法分析编译之类,只有一个C调用栈的模拟,在模拟调用栈中记录每次函数调用时用malloc申请的内存而在函数退出时自动释放,所采用的设计思路跟python的type函数指针机制类似。在看完了python源码剖析之后,总是想着虽身怀有屠龙之技而无用武之地,于是想干点什么事来验证自己的刚练成的打狗棒法。于是乎,写了一个小小的微博手机网页版爬虫,主要用于收集统计所有微博用户的uid与个性域名,看看微博到底有多少用户,为后续调查有多少个有效的用户先铺个路。刚开始只爬自己的关注人与粉丝,起先是用re正则语法分析做成的,后来改为了lxml中的xpath模块,起先用re时因为刚入手python,用的时间较长,功能也简单,花费了不少的时间,后来熟悉python之后lxml一天之内就解决了,在分析微博的手机版html结构上花费时间较多,py语言上倒没遇到什么障碍。爬自己的关注与粉丝都运行得好好的,然后改用数据库存储uid与nickname了,一切似乎都很顺利。然后以自己出发,迭代的爬取粉丝的粉丝,自己把程序运行好就开开心心的吃晚饭去了,满以为回来之后数据库应该满满的是战果的,结果好用的程序突然跑到中间就死掉了,说lxml.xpath出现了IndexError。虽然很喜欢自己写的蜘蛛的,但是蜘蛛遭遇到臭虫时还是挺讨厌的。经过排查,发现自己的微博手机网页版登陆之后无论什么url最后都跳转到http://weibo.cn/pub之下。呵呵,新浪的后台也是够机智的。在一小段时间爆发访问是要被封的。你以为这就是结局吗?呵呵呵。。。第二天,发现有解封了。我就改了个隔一段时间才访问一次微博页面的。这下可以解决爆发访问被封的问题了吧。结果。。。MD,还是被封号了,应该是一天之内访问次数是有限制的。新浪微博的后台实在是尼玛太机智了。
■网友
从协议的内容来看,应该是不违反使用协议的。不过你有用程序来自动爬微博信息的权利,它也有为了避免你对服务器造成太大压力通过技术手段封你IP的权利。链接:新浪微博服务使用协议
■网友
爬虫和普通浏览器没明显差异。但问题……爬虫怎么知道帐号的……
■网友
简要回答根据微博提供的robots协议可以看出是不允许个体用户的所有爬取行为。
详细描述可以通过以下网址查询哪些爬取行为是被允许的:
https://weibo.com/robots.txt引用百度百科对该协议的介绍:robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
Sitemap: http://weibo.com/sitemap.xml User-Agent: Baiduspider Disallow: User-agent: 360Spider Disallow: User-agent: Googlebot Disallow: User-agent: Mediapartners-Google Disallow: User-agent: Sogou web spider Disallow: User-agent: bingbot Disallow: User-agent: smspider Disallow: User-agent: HaosouSpider Disallow: User-agent: YisouSpider Disallow: User-agent: * Disallow: /当前时间点的协议状态如上述代码块述,可以看出持有不同User-agent的用户拥有不同的爬取权限,个人用户重点关注最后一行,意思是所有的爬取行为都不被允许。爬虫的首要工作就是了解相关规定,着手行动前先查询站点允许爬取的范围,法理和道义上可行再进行。对于其他网站,亦可通过类似方法查询(即在网站根目录后加 /robots.txt)。对于未提供该协议的网站,默认是允许所有的爬取行为。
另外,除了使用


推荐阅读