使用python机器登陆新浪微博抓取数据

1.[代码][Python]代码

# import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置

import re , urllib.parse , urllib.request , http.cookiejar , base64 , binascii , rsa

# 以下4行代码说简单点就是让你接下来的所有get和post请求都带上已经获取的cookie,因为稍大些的网站的登陆验证全靠cookie

cj = http.cookiejar.LWPCookieJar()

cookie_support = urllib.request.HTTPCookieProcessor(cj)

opener = urllib.request.build_opener(cookie_support , urllib.request.HTTPHandler)

urllib.request.install_opener(opener)

# 封装一个用于get的函数,新浪微博这边get出来的内容编码都是-8,所以把utf-8写死在里边了,真实项目中建议根据内容实际编码来决定

def getData(url) :

request = urllib.request.Request(url)

response = urllib.request.urlopen(request)

text = response.read().decode('utf-8')

return text

# 封装一个用于post的函数,验证密码和用户名都是post的,所以这个postData在本demo中专门用于验证用户名和密码

def postData(url , data) :

# headers需要我们自己来模拟

headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'}

# 这里的urlencode用于把一个请求对象用'&'来接来字符串化,接着就是编码成utf-8

data = urllib.parse.urlencode(data).encode('utf-8')

request = urllib.request.Request(url , data , headers)

response = urllib.request.urlopen(request)

text = response.read().decode('gbk')

return text

def login_weibo(nick , pwd) :

#==========================获取servertime , pcid , pubkey , rsakv===========================

# 预登陆请求,获取到若干参数

prelogin_url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.15)&_=1400822309846' % nick

preLogin = getData(prelogin_url)

# 下面获取的四个值都是接下来要使用的

servertime = re.findall('"servertime":(.*?),' , preLogin)[0]

pubkey = re.findall('"pubkey":"(.*?)",' , preLogin)[0]

rsakv = re.findall('"rsakv":"(.*?)",' , preLogin)[0]

nonce = re.findall('"nonce":"(.*?)",' , preLogin)[0]

#===============对用户名和密码加密================

# 好,你已经来到登陆新浪微博最难的一部分了,如果这部分没有大神出来指点一下,那就真是太难了,我也不想多说什么,反正就是各种加密,最后形成了加密后的su和sp

su = base64.b64encode(bytes(urllib.request.quote(nick) , encoding = 'utf-8'))

rsaPublickey = int(pubkey , 16)

key = rsa.PublicKey(rsaPublickey , 65537)

# 稍微说一下的是在我网上搜到的文章中,有些文章里并没有对拼接起来的字符串进行bytes,这是python3的新方法好像是。rsa.encrypt需要一个字节参数,这一点和之前不一样。其实上面的base64.b64encode也一样

message = bytes(str(servertime) + '\t' + str(nonce) + '\n' + str(pwd) , encoding = 'utf-8')

sp = binascii.b2a_hex(rsa.encrypt(message , key))

#=======================登录=======================

#param就是激动人心的登陆post参数,这个参数用到了若干个上面第一步获取到的数据,可说的不多

param = {'entry' : 'weibo' , 'gateway' : 1 , 'from' : '' , 'savestate' : 7 , 'useticket' : 1 , 'pagerefer' : 'http://login.sina.com.cn/sso/logout.php?entry=miniblog&r=http%3A%2F%2Fweibo.com%2Flogout.php%3Fbackurl%3D' , 'vsnf' : 1 , 'su' : su , 'service' : 'miniblog' , 'servertime' : servertime , 'nonce' : nonce , 'pwencode' : 'rsa2' , 'rsakv' : rsakv , 'sp' : sp , 'sr' : '1680*1050' ,

'encoding' : 'UTF-8' , 'prelt' : 961 , 'url' : 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack'}

# 这里就是使用postData的唯一一处,也很简单

s = postData('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)' , param)

# 好了,当你的代码执行到这里时,已经完成了大部分了,可是有很多爬虫童鞋跟我一样还就栽在了这里,假如你跳过这里直接去执行获取粉丝的这几行代码你就会发现你获取的到还是让你登陆的页面,真郁闷啊,我就栽在这里长达一天啊

# 好了,我们还是继续。这个urll是登陆之后新浪返回的一段脚本中定义的一个进一步登陆的url,之前还都是获取参数和验证之类的,这一步才是真正的登陆,所以你还需要再一次把这个urll获取到并用get登陆即可

urll = re.findall("location.replace\(\'(.*?)\'\);" , s)[0]

getData(urll)

#======================获取粉丝====================

# 如果你没有跳过刚才那个urll来到这里的话,那么恭喜你!你成功了,接下来就是你在新浪微博里畅爬的时候了,获取到任何你想获取到的数据了!

# 可以尝试着获取你自己的微博主页看看,你就会发现那是一个多大几百kb的文件了

text = getData('http://weibo.com/527891819/home?wvr=5&lf=reg')

fp = open('yeah.txt' , 'w' , encoding = 'utf-8')

fp.write(text)

fp.close()

login_weibo('你的微博邮箱' , '你的微博密码')

#==================================================后记============================================================

#不经历风雨,怎能见彩虹!

python登录新浪微博抓取微博内容_python机器登陆新浪微博抓取数据相关推荐

  1. python爬取新浪微博内容_python机器登陆新浪微博抓取数据

    1.[代码][Python]代码 # import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置 import re , urllib.parse , urllib.r ...

  2. python爬取微博内容_Python 爬虫如何机器登录新浪微博并抓取内容?

    最近为了做事件分析写了一些微博的爬虫,两个大V总共爬了超70W的微博数据. 官方提供的api有爬取数量上限2000,想爬取的数据大了就不够用了... 果断撸起袖子自己动手!先简单说一下我的思路: 一. ...

  3. python爬取新闻网站内容_python爬虫案例:抓取网易新闻

    此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...

  4. python如何用xpath爬取指定内容_Python利用Xpath选择器爬取京东网商品信息

    HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:XPath 使用路径表达式在 XML 文档中选取节点.节点是通过沿着路径或者 step ...

  5. python爬取微博文本_Python爬虫爬取新浪微博内容示例【基于代理IP】

    本文实例讲述了Python爬虫爬取新浪微博内容.分享给大家供大家参考,具体如下: 用Python编写爬虫,爬取微博大V的微博内容,本文以女神的微博为例(爬新浪m站:https://m.weibo.cn ...

  6. 简单爬取微博评论详细解析,学习爬取ajax异步数据交换动态网页

    爬取微博评论详细解析,学习爬取ajax异步数据交换动态网页 1.什么是ajax异步数据交换网页 2.用到的工具模块和简单解释 3.网页内容解析 4.代码实现及解释 1.什么是ajax异步数据交换网页 ...

  7. python抓取微博评论_Python爬取新浪微博评论数据,你有空了解一下?

    开发工具 Python版本:3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装Pyth ...

  8. python爬取微博评论_python爬虫抓取新浪微博数据

    需求分析 微博主页 抓取的内容包括:微博发布的时间,正文(仅提取文字),转发数,评论数,点赞数 抓取的内容 数据是怎么加载的 新浪微博的数据是用ajax异步下拉加载的,在chrome的调试模式下可捕捉 ...

  9. Python selenium抓取微博内容的示例代码

    Selenium简介与安装  Selenium是什么?  Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE. ...

最新文章

  1. str.format() 格式化字符串函数
  2. 求高维方阵的绝对值最大特征值的方法:幂法(幂迭代)。
  3. javascript 模式学习篇---基础
  4. opencv-python单目视觉标定,简单易用。
  5. oracle sql练习_使用Scrapy爬虫,并将数据存储到oracle
  6. 记录——《C Primer Plus (第五版)》第十章编程练习第十一题
  7. 如何进行 JVM 调优
  8. 记录一个可以word,xls,PDF互转思维导图的工具
  9. php 浏览器 保存网页图片,PHP实现浏览器文件下载图片或者php文件
  10. php curl 417,PHP Curl 417 Expectation Failed解决办法
  11. 小厮吃货:智能便利店不是新零售的风口?!
  12. 恶趣装逼制作神器,模板丰富的微信小程序
  13. Python数据类型(一)数字类型
  14. 《塞尔达传说》与氛围游戏的兴起:在游戏中感受禅意
  15. 新学期,新FLAG | 尽人事,听天命,守得云开见月明
  16. 宠物狗网页制作作业 保护动物网页设计模板 简单学生网页设计 静态HTML CSS网站制作成品
  17. .有一千万条短信,有重复,以文本文件的形式保 请用5 分钟时间,找出重复出现最多的前10 条。
  18. mysql查询本用户的表的列名等信息_mysql常用命令查询手册
  19. 常见的一些C#开源框架或者开源项目
  20. 环环相扣---近期自动测试经验总结

热门文章

  1. 处置机调剂:调剂的概念、机遇、切换、进程以及调剂方法和根本原则
  2. Markdown之时序图sequenceDiagram高阶语法(十三)
  3. 2021年茶艺师(初级)考试技巧及茶艺师(初级)复审考试
  4. PHP处理图片(JPG/PNG/GIF)
  5. python绘制笛卡尔心形曲线_走近解析几何学之父笛卡尔:笛卡尔坐标系与浪漫的心形曲线...
  6. OpenCV实践之路——Qt中用opencv提取和匹配SIFT特征点
  7. mysql整型无符号 大小_解决mysql无符号整型自减运算时溢出的问题
  8. 浮点数和无符号整型互转
  9. 用ASP编写网络传呼机
  10. bshare插件使用