用的mysql数据库。
MySQ是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
但是新浪提供的API可谓是项目繁琐,尤其是关于java的API。三个版本的javaAPI让你蛋碎到极致:weibo4j-oauth20,weibo4jandroid,android-sdk这三个版本真是要逆天。自从新浪微博将v1变到v2的时候,weibo4jandroid已经无法使用了,所以只能使用剩下的两个。但是当你很辛苦的下载了版本的时候,运行这个程序,发现只能获取code,而不能获取accesstoken,打开源代码,点击里面的MainActivity,发现一句 *** 蛋到要割掉自己小鸡鸡的话:不要担心,通过code变成token的方法新浪其实已经提供了,只不过没有在android-sdk中间,而是在weibo4j中的 weibo4jexamplesoauth2OAuth4Code里面:
uid是不会变的,这个是用户的唯一身份标识。access_token 的话,20方式会有一个有效期,过了有效期,如果用户没有手工取消授权,再一次交换后,会通过uid重新生成一个access_token(但是当然不会自动更新了),你数据库更新一下就行了,另外你也可以通过申请高级权限延长access_token的有效期间。另外20就是这样的方案,access_token不会像10那样固定不变,更靠谱就是申请高级权限延长,但是其实延长不延长没什么关系,过期后更新就行,不会影响用户使用的。
我是个微博重度用户,工作学习之余喜欢刷刷timeline看看有什么新鲜事发生,也因此认识了不少高质量的原创大V,有分享技术资料的,比如好东西传送门;有时不时给你一点人生经验的,比如石康;有高产的段子手,比如银教授;有黄图黄段子小能手,比如阿良哥哥 木木萝希木 初犬饼…
好吧,我承认,爬黄图黄段子才是我的真实目的,前三个是掩人耳目的…(捂脸,跑开)
另外说点题外话,我一开始想使用Sina Weibo API来获取微博内容,但后来发现新浪微博的API限制实在太多,大家感受一下:
只能获取当前授权的用户(就是自己),而且只能返回最新的5条,WTF!
所以果断放弃掉这条路,改为『生爬』,因为PC端的微博是Ajax的动态加载,爬取起来有些困难,我果断知难而退,改为对移动端的微博进行爬取,因为移动端的微博可以通过分页爬取的方式来一次性爬取所有微博内容,这样工作就简化了不少。
最后实现的功能:
输入要爬取的微博用户的user_id,获得该用户的所有微博
文字内容保存到以%user_id命名文本文件中,所有高清原图保存在weibo_image文件夹中
具体 *** 作:
首先我们要获得自己的cookie,这里只说chrome的获取方法。
用chrome打开新浪微博移动端
option+command+i调出开发者工具
点开Network,将Preserve log选项选中
输入账号密码,登录新浪微博
找到mweibocn->Headers->Cookie,把cookie复制到代码中的#your cookie处
cookie
然后再获取你想爬取的用户的user_id,这个我不用多说啥了吧,点开用户主页,地址栏里面那个号码就是user_id
将python代码保存到weibo_spiderpy文件中
定位到当前目录下后,命令行执行python weibo_spiderpy user_id
当然如果你忘记在后面加user_id,执行的时候命令行也会提示你输入
最后执行结束
iTerm
小问题:在我的测试中,有的时候会出现下载失败的问题,具体原因还不是很清楚,可能是网速问题,因为我宿舍的网速实在太不稳定了,当然也有可能是别的问题,所以在程序根目录下面,我还生成了一个userid_imageurls的文本文件,里面存储了爬取的所有的下载链接,如果出现大片的下载失败,可以将该链接群一股脑导进迅雷等下载工具进行下载。
另外,我的系统是OSX EI Capitan10112,Python的版本是27,依赖库用sudo pip install XXXX就可以安装,具体配置问题可以自行stackoverflow,这里就不展开讲了。
下面我就给出实现代码(严肃脸)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#--coding:utf8--
import re
import string
import sys
import os
import urllib
import urllib2
from bs4 import BeautifulSoup
import requests
from lxml import etree
reload(sys)
syssetdefaultencoding('utf-8')
if(len(sysargv) >=2):
user_id = (int)(sysargv[1])
else:
user_id = (int)(raw_input(u"请输入user_id: "))
cookie = {"Cookie": "#your cookie"}
url = 'dfilter=1&page=1'%user_id
html = requestsget(url, cookies = cookie)content
selector = etreeHTML(html)
pageNum = (int)(selectorxpath('//input[@name="mp"]')[0]attrib['value'])
result = ""
urllist_set = set()
word_count = 1
image_count = 1
print u'爬虫准备就绪'
for page in range(1,pageNum+1):
#获取lxml页面
url = 'hu/%dfilter=1&page=%d'%(user_id,page)
lxml = requestsget(url, cookies = cookie)content
#文字爬取
selector = etreeHTML(lxml)
content = selectorxpath('//span[@class="ctt"]')
for each in content:
text = eachxpath('string()')
if word_count >= 4:
text = "%d :"%(word_count-3) +text+"\n\n"
else :
text = text+"\n\n"
result = result + text
word_count += 1
#爬取
soup = BeautifulSoup(lxml, "lxml")
urllist = soupfind_all('a',href=recompile(r'^mblog/oripic',reI))
first = 0
for imgurl in urllist:
urllist_setadd(requestsget(imgurl['href'], cookies = cookie)url)
image_count +=1
fo = open("/Users/Personals/%s"%user_id, "wb")
fowrite(result)
word_path=osgetcwd()+'/%d'%user_id
print u'文字微博爬取完毕'
link = ""
fo2 = open("/Users/Personals/%s_imageurls"%user_id, "wb")
for eachlink in urllist_set:
link = link + eachlink +"\n"
fo2write(link)
print u'链接爬取完毕'
if not urllist_set:
print u'该页面中不存在'
else:
#下载,保存在当前目录的pythonimg文件夹下
image_path=osgetcwd()+'/weibo_image'
if ospathexists(image_path) is False:
osmkdir(image_path)
x=1
for imgurl in urllist_set:
temp= image_path + '/%sjpg' % x
print u'正在下载第%s张' % x
try:
urlliburlretrieve(urllib2urlopen(imgurl)geturl(),temp)
except:
print u"该下载失败:%s"%imgurl
x+=1
print u'原创微博爬取完毕,共%d条,保存路径%s'%(word_count-4,word_path)
print u'微博爬取完毕,共%d张,保存路径%s'%(image_count-1,image_path)
微博开放平台是一个基于新浪微博客系统的开放的信息订阅、分享与交流平台。微博开放平台为您提供了海量的微博信息、粉丝关系、以及随时随地发生的信息裂变式传播渠道。您可以登录平台并创建应用,使用微博平台提供的接口,创建有趣的应用或者让您的网站具有更强的社交特性。 用微博账号登录经过简单的代码整合,并在您的网站上放置微博登录按钮,您的网站用户就能够使用微博账号进行登录。网站可以获取当前用户的用户名、头像、当前用户的粉丝和关注对象列表。您可以整合现有的用户账户系统或者直接替换成微博的账户系统,帮助您提升网站的用户注册量和提升网站访问数据。 使用OAuth的授权机制进行开发,在网站的显著位置添加“与新浪微博连接”的功能,让用户与能够直接点击并登录。 参考开发介绍:连接微博分享与动态新浪微博现有的用户传播体系非常完整,好友之间通过大量的信息分享带来病毒式的传播。平台提供了分享按钮和动态展现插件,让你仅仅通过几行HTML代码就能够在你的网站上加入社交特性。分享的内容也会在微博网站上展现,用户点击链接后可直接进入相关内容。我们也提供了大量的 API接口帮你实现更多的特性。 内容分享:添加分享到微博的按钮:点击后d出分享窗口分享内容: 获取微博动态信息:在网站上显示当前网站的微博信息 内容发布与绑定微博平台也提供了发布微博信息的接口,在网站上绑定微博账户后,您可以在网站上整合发布微博信息的功能,让用户在您的网站上发布的信息能够及时的同步到微博网站上。用户的关注者能够及时看到微博内容,可以通过内容的链接或来源链接点击进入网站。用户不仅可以发布文字内容,也可以添加。 可以通过账号绑定来实时同步微博信息,让用户的关注者也能够及时了解用户的动态。 在网站上发布信息后,可以直接显示在微博上,微博信息中会显示来源网站,用户可以直接点击进入网站。 参考开发介绍: API接口其他开发环境平台上也可以开发出优秀的桌面客户端应用和手机客户端应用,让用户能够更加方便的发布微博信息和分享内容。相关开发SDK可参见: SDK下载成功案例微博平台上已经发布了多款Web应用、网站、桌面客户端、手机客户端,您可以在这里查看我们的成功案例。取自" >
以上就是关于新浪微博使用什么数据库全部的内容,包括:新浪微博使用什么数据库、详细讲解新浪微博的API到底如何使用、新浪微博 api 网站中判断登录是依据uid还是token呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)