最近想做一个微博的搜索页文本分析的小项目,因为开放平台里这个api的限制略多,决定进入爬虫坑自己动手.
之前久闻Scrapy大名,尝试了一下,抓取网页甚是好用,避免了许多HTTP方面的繁琐处理.不过还是卡在了登陆这一步上.
一般模拟登陆有两种方式,一个是抓登陆时的包,然后模拟所需数据发送过去.由于新浪经常改参数和加密方式,这个方法费时费力.另一种就是直接发送cookie.
在Scrapy中具体实现时,就是在爬取的spider类中,重载start_requests方法,生成一个带cookie的request,后续爬取的request同样需要带上cookie.
一个爬取单个搜索结果网页并存储的简单spider代码如下:
#coding = utf-8
from scrapy.contrib.spiders import CrawlSpider
from scrapy.http import Request
class WeiboSpider(CrawlSpider):
name = 'weibo'
allowed_domains = ['weibo.com', 'sina.com.cn']
def start_requests(self):
url = 'http://s.weibo.com/weibo/'+keyword+'?page=2' #keyword为需要搜索的关键词,此处加上page=2易于测试是否成功登陆,因为搜索结果第二页未登录时是看不到的
print url