先让大家看下最终效果...

1,使用的工具及包

google浏览器

User-Agent Switcher for Google Chrome 这是一个能自定义浏览器头的Google浏览器插件

requests ---爬虫必备包(安装 pip install requests )

lxml ---解析html的一个包(安装 pip install lxml),windows用户如果安装不上的话,到Python Extension Packages for Windows 这边下载

js2xml ---把JavaScript语句转成xml (安装 pip install js2xml )

2,分析页面

先用User-Agent Switcher for Google Chrome将浏览器头改为 chrome on Android Mobile

1,获取所有的红包列表

随便点开及个“抢红包”按钮 发现url是这样的

可以发现只有ouid是变化的,所以,我们只要得到ouid就可以生成url了。

使用f12发现如下图的 action-data就是我们需要的ouid了,这样我们就得到了所有的groupid了

代码如下

#获取红包列表

def getuid():

url = 'http://chunjie.hongbao.weibo.com/hongbao2017/h5index'

z = requests.get(url,headers=headers)

if z.status_code == 200:

# 这边是查找所有的ouid

alluid = etree.HTML(z.content).xpath('//div[@class="m-auto-box"]/@action-data')

return alluid

2,“抢红包”

打开 其中一个粉丝红包页面,点击抢红包,查看请求

发现请求的url是 (请加上http://,知乎如果url写全会自动转为页面标题.)

请求的方法是post

请求的参数是groupid: 同上面的groupid,默认都是1000110

uid: 就是上面获取的ouid

share: 经过测试,1表示分享到微博,0表示不分享

st: 是一个变动的值,所以每次必须先获取它

获取st

一般这些值都在网页源代码里面,所以我们直接打开在粉丝红包查看源代码,然后搜索st

果然,值就在源代码里面。

因为值在JavaScript代码里面,所以我们用js2xml来获取它(当然也可以用正则表达式)

代码如下:

def getst(url):

z = requests.get(url,headers=headers)

jscode = etree.HTML(z.content).xpath("//script[contains(., 'weibo')]/text()")[0].replace(u'','')

parsed_js = js2xml.parse(jscode)

st = parsed_js.xpath('//property[@name="st"]/string/text()')[0]

return st

这边有用到replace把“” 替换掉是因为中文会一直报错

cookie 填写可以看如下截图,把下图中的SING到0304 复制,然后放到下面代码中****号的位置

headers ={

#这边cookie替换成你的cookie

'Cookie':'*****',

'User-Agent':'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19',

}

最后完整代码如下:

# -*- coding: utf-8 -*-

import requests

import js2xml

from lxml import etree

headers ={

#这边cookie替换成你的cookie

'Cookie':'',

'User-Agent':'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19',

}

#获取红包列表

def getuid():

url = 'http://chunjie.hongbao.weibo.com/hongbao2017/h5index'

# 带上request headers

z = requests.get(url,headers=headers)

if z.status_code == 200:

# 这边是查找所有的ouid

alluid = etree.HTML(z.content).xpath('//div[@class="m-auto-box"]/@action-data')

return alluid

#获取st的值

def getst(url):

#带上request headers

z = requests.get(url,headers=headers)

# 获取第一段JavaScript,并去掉 ,防止中文报错

jscode = etree.HTML(z.content).xpath("//script[contains(., 'weibo')]/text()")[0].replace(u'','')

#使用js2xml 把JavaScript代码替换成xml

parsed_js = js2xml.parse(jscode)

#打印下 xml

# print js2xml.pretty_print(parsed_js)

#从上面可以看到st在哪,然后用xpath写出来

st = parsed_js.xpath('//property[@name="st"]/string/text()')[0]

return st

# 抢红包

def tj(url,uid,st,tjheaders):

#生成需要发送的data

data = {

'groupid':'1000110',

'uid':uid,

'share':'1',

'st':st

}

# 这里使用了post,headers增加了Referer

z = requests.post(url,data=data,headers=tjheaders)

#把得到的结果以json形式展示

_ = z.json()

#如果json中有“ok”,表示提交成功了,否则返回报错信息

if _.has_key('ok'):

print _['data']['error_msg']

else:

print _['errMsg']

if __name__ == '__main__':

# 得到所有的uid

uids = getuid()

for uid in uids:

#生成红包页面的url

url = 'http://hongbao.weibo.com/h5/aboutyou?groupid=1000110&ouid=%s' %uid

#获取st

st = getst(url)

#生成点击“抢红包”页面的url

tjurl = 'http://hongbao.weibo.com/aj_h5/lottery?uid=%s&groupid=1000110&wm=' %uid

# 添加Referer,如果不添加会报错

headers['Referer'] = url

tjheaders = headers

try:

# 点击“抢红包”

tj(tjurl,uid,st,tjheaders)

except:

pass

总结

整个微博抢红包爬虫如下:获取所有的红包列表

获取点击"抢红包的动作"

因为2中需要一个参数st,所以我们生成了st

模拟点击抢红包

欢迎关注本人的微信公众号获取更多Python爬虫相关的内容

(可以直接搜索「Python爬虫分享」)

python爬虫爬微信红包_爬虫之微博抢红包相关推荐

  1. python爬虫爬微信红包_python 微信红包

    def redbags(money, num=10): import random choice = random.sample(range(1, money * 100), num - 1) cho ...

  2. python爬虫爬当当网_爬虫实战一:爬取当当网所有 Python 书籍

    本文转载自微信公众号[ 极客猴 ],作者知乎主页 此前错误标注来源导致侵权,在此表示歉意. 我们已经学习 urllib.re.BeautifulSoup 这三个库的用法.但只是停留在理论层面上,还需实 ...

  3. python爬虫爬取豆瓣_爬虫,从爬取豆瓣开始

    1 爬虫概述 当初第一次接触python,听的最多的就是爬虫爬虫,搞得我一脸蒙蔽,因为我从来都没听过这么新颖的词,而且我还天真的以为是不是python长得像一条小虫子,所以才叫爬虫. 直到后来经过不断 ...

  4. python 爬虫爬不出来_爬虫爬不进下一页了,怎么办

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #-*- coding: UTF-8 -*- import scrapy from hoho.items import HohoItem import r ...

  5. 爬虫爬评书吧_爬虫学习:xpath爬取评书网

    在家闲着,想找点评书听,但找了很久都没找到方便打包下载的地方.于是就拿起自学的python爬虫,自己动手丰衣足食. 运行环境:Windows7,python3.7 操作步骤: 1.打开选好的评书主页面 ...

  6. 爬虫爬评书吧_爬虫 + 小程序 自定义开发一个听书程序

    最近工作之余会听听评书,但主流门户收费加广告着实让人烦躁.作为IT人,怎能如此顺应别人家的产品规则. 下面以 python + taro 为例,写一个爬虫 + 小程序的播放应用: 最终实现的效果如下: ...

  7. 图片链接用src不能被爬虫爬到吗_爬虫:带你一键爬取王者荣耀英雄皮肤壁纸

    一.前言 王者荣耀这款手游,想必大家都玩过或听过,游戏里英雄有各式各样的皮肤,制作得很精美,有些拿来做电脑壁纸它不香吗.本文带你利用Python爬虫一键下载王者荣耀英雄皮肤壁纸. 1. 目标 创建一个 ...

  8. 微信红包雨怎么抢_1月26日晚8点微信红包雨发放时间表 怎么抢红包全攻略

    1月26日晚8点微信红包雨发放时间表 怎么抢红包全攻略 据1月26日消息,微信官方将在今晚8点开启一轮红包雨[在哪里抢],用户通过手机摇一摇的方式可抢红包. 延伸阅读: 抢红包攻略: 1月26日晚8点 ...

  9. python批量下载静态页面_爬虫实战之,爬取壁纸,批量下载

    一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按 ...

最新文章

  1. 张量解释——深度学习的数据结构
  2. java OpenCv Mat 类的基本操作(3)
  3. linux编程:getenv,putenv,setenv
  4. virtualenv在windows10下面使用的注意事项
  5. 工作学习资料备份记录
  6. Kafka-batch.size属性
  7. 浙江省计算机数据库三级报名,浙江省计算机等级考试三级数据库技术
  8. vsc写vue生成基本代码快捷键_Vscode添加用户代码实现基础模板快速调用
  9. java中class.forName(str)的作用
  10. (源代码)用Python制作疫情的实时数据地图(PS:全国以及每个省)
  11. 2020年内蒙古自治区第十五届大学生程序设计竞赛榜单
  12. 1. NET 6.0 前言
  13. arcgis剔除异常值栅格计算器_arcgis 栅格计算器(Spatial Analyst/Raster Calculator)
  14. 微生物群落基于KEGG预测功能的丰度分布图绘制
  15. 计算机休眠是打不开,电脑自动进入睡眠模式打不开是为什么
  16. html列表横向变纵向,手机版利用 CSS 将横向表格转换成竖向列表显示
  17. 真的有人会喜欢一个程序员?
  18. [概率论]图像里的“白噪声”——电视机搜不到台时雪花斑点的形成原因 (不信谣,不传谣,与宇宙微波背景辐射没有任何关系)
  19. 直播软件搭建音视频开发中的视频采集
  20. Zemax光学设计(十一) —— 扫描系统设计

热门文章

  1. 保险公司理赔作业流程分析
  2. 郑州分销小程序开发如何分销裂变?
  3. 推荐九大类实用的AI工具网站 | 最实用的AI工具网站推荐大全(建议收藏!!!)
  4. (SQL版)天堂二私服架設
  5. HTML5外包团队—Sencha Touch 2.3 正式版下载
  6. scikit-learn决策树
  7. 持续集成之群聊机器人消息推送:钉钉 vs 企业微信
  8. avue table crud
  9. 佳明 Vivomove Trend 智能手表 评测 佳明 Vivomove Trend 智能手表参数配置
  10. Elasticsearch插件管理(ik分词器、附件文本抽取插件)