Ps: 重要的事情说三遍!!! 结尾有彩蛋,结尾有彩蛋,结尾有彩蛋。
如果自己需要爬(cai)虫(ji)的数据量比较大,为了防止被网站封Ip,可以分时段爬取,另外对于爬到的数据一般是用来存储数据库,这就需要对数据进行去重处理,记录上次爬取的状态,就可以实现在爬虫中断后,可以快速继续上次的状态,实现增量爬取,这里可以参考我之前写过的一个新闻采集,增量采集新闻数据,本文写的对新浪微博的数据采集和处理完整代码在我的微博搞笑排行榜的,刚好写这篇文之前看到榜姐1月8号0点话题是
1.使用新浪微博提供的API对数据进行采集
作为一个爬虫菜鸟来说,如果不会使用代理IP池,同时对网站的反爬机制不太清楚,建议先去看下网站是否自己提供的有API,今天我们要爬取的网站是新浪微博,当然新浪网作为为全球用户24小时提供全面及时的中文资讯的大网站,一定是提供自己的API接口的。这样的大网站,必定是经历了无数场爬虫与反爬之间的战争,也一定有很健全的反爬策略,所以我们可以通过调用新浪微博的开放平台来获取我们想要的信息。使用之前请详细阅读API文档,在开放平台认证为开发者,附App key链接。
# 如果这里引入失败,可以直接下载SDK和文件放一块就ok
from weibo import APIClient
import webbrowser
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
APP_KEY = '你的App Key ' # 获取的app key
APP_SECRET = '你的AppSecret' # 获取的appsecret
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html' #回调链接
# 在网站设置"使用微博账号登陆"的链接,当用户点击链接后,引导用户跳转至如下地址
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
# 得到授权页面的url,利用webbrowser打开这个url
url = client.get_authorize_url()
webbrowser.open_new(url) #打开默认浏览器获取code参数
# 获取URL参数code:
print '输入url中code后面的内容后按回车键:'
code = raw_input() # 人工输入网址后面的code内容
r = client.request_access_token(code) # 获得用户授权
access_token = r.access_token # 新浪返回的token,类似abc123xyz456
expires_in = r.expires_in
# 设置得到的access_token,client可以直接调用API了
client.set_access_token(access_token, expires_in)
获取某个用户最新发表的微博列表
content = client.statuses.user_timeline(uid=2706896955, count=100)
返回的结果是json格式的
{
"statuses": [
{
"created_at": "Tue May 31 17:46:55 +0800 2011",
"id": 11488058246,
"text": "求关注。",
"source": "