python抓取新浪微博,求教!!?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python抓取新浪微博,求教!!?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3112字,纯文字阅读大概需要5分钟。
内容图文
![python抓取新浪微博,求教!!?](/upload/InfoBanner/zyjiaocheng/436/0fbad0c92b5241a4901185c8e8acdca6.jpg)
回复内容:
http://github.com/zhu327/rss 既然你也用python就直接看代码吧爬这里 http://service.weibo.com/widget/widget_blog.php?uid={uid} 替换uid,无需登录,不会被挡 爬手机端
http://weibo.cn
可以参考下面的代码,来自极客学院,侵删
#-*-coding:utf8-*-
import smtplib
from email.mime.text import MIMEText
import requests
from lxml import etree
import os
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
class mailhelper(object):
'''
这个类实现发送邮件的功能
'''
def __init__(self):
self.mail_host="smtp.xxxx.com" #设置服务器
self.mail_user="xxxx" #用户名
self.mail_pass="xxxx" #密码
self.mail_postfix="xxxx.com" #发件箱的后缀
def send_mail(self,to_list,sub,content):
me="xxoohelper"+"<"+self.mail_user+"@"+self.mail_postfix+">"
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.connect(self.mail_host)
server.login(self.mail_user,self.mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
class xxoohelper(object):
'''
这个类实现将爬取微博第一条内容
'''
def __init__(self):
self.url = 'http://weibo.cn/u/xxxxxxx' #请输入准备抓取的微博地址
self.url_login = 'https://login.weibo.cn/login/'
self.new_url = self.url_login
def getSource(self):
html = requests.get(self.url).content
return html
def getData(self,html):
selector = etree.HTML(html)
password = selector.xpath('//input[@type="password"]/@name')[0]
vk = selector.xpath('//input[@name="vk"]/@value')[0]
action = selector.xpath('//form[@method="post"]/@action')[0]
self.new_url = self.url_login + action
data = {
'mobile' : 'xxxxx@xxx.com',
password : 'xxxxxx',
'remember' : 'on',
'backURL' : 'http://weibo.cn/u/xxxxxx', #此处请修改为微博地址
'backTitle' : u'微博',
'tryCount' : '',
'vk' : vk,
'submit' : u'登录'
}
return data
def getContent(self,data):
newhtml = requests.post(self.new_url,data=data).content
new_selector = etree.HTML(newhtml)
content = new_selector.xpath('//span[@class="ctt"]')
newcontent = unicode(content[2].xpath('string(.)')).replace('http://','')
sendtime = new_selector.xpath('//span[@class="ct"]/text()')[0]
sendtext = newcontent + sendtime
return sendtext
def tosave(self,text):
f= open('weibo.txt','a')
f.write(text + '\n')
f.close()
def tocheck(self,data):
if not os.path.exists('weibo.txt'):
return True
else:
f = open('weibo.txt', 'r')
existweibo = f.readlines()
if data + '\n' in existweibo:
return False
else:
return True
if __name__ == '__main__':
mailto_list=['xxxxx@qq.com'] #此处填写接收邮件的邮箱
helper = xxoohelper()
while True:
source = helper.getSource()
data = helper.getData(source)
content = helper.getContent(data)
if helper.tocheck(content):
if mailhelper().send_mail(mailto_list,u"女神更新啦",content):
print u"发送成功"
else:
print u"发送失败"
helper.tosave(content)
print content
else:
print u'pass'
time.sleep(30)
据说爬手机版会有奇效。
我以前爬过,不知道现在可行不爬他的移动端页面,当时限制比网页端少。
爬虫程序部署在google app engine多个节点上跑 新浪有开发者平台,有专门的API接口,用爬虫会被屏蔽
内容总结
以上是互联网集市为您收集整理的python抓取新浪微博,求教!!?全部内容,希望文章能够帮你解决python抓取新浪微博,求教!!?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。