python爬虫爬微信红包_爬虫之微博抢红包
先让大家看下最终效果...
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爬虫爬微信红包_爬虫之微博抢红包相关推荐
- python爬虫爬微信红包_python 微信红包
def redbags(money, num=10): import random choice = random.sample(range(1, money * 100), num - 1) cho ...
- python爬虫爬当当网_爬虫实战一:爬取当当网所有 Python 书籍
本文转载自微信公众号[ 极客猴 ],作者知乎主页 此前错误标注来源导致侵权,在此表示歉意. 我们已经学习 urllib.re.BeautifulSoup 这三个库的用法.但只是停留在理论层面上,还需实 ...
- python爬虫爬取豆瓣_爬虫,从爬取豆瓣开始
1 爬虫概述 当初第一次接触python,听的最多的就是爬虫爬虫,搞得我一脸蒙蔽,因为我从来都没听过这么新颖的词,而且我还天真的以为是不是python长得像一条小虫子,所以才叫爬虫. 直到后来经过不断 ...
- python 爬虫爬不出来_爬虫爬不进下一页了,怎么办
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #-*- coding: UTF-8 -*- import scrapy from hoho.items import HohoItem import r ...
- 爬虫爬评书吧_爬虫学习:xpath爬取评书网
在家闲着,想找点评书听,但找了很久都没找到方便打包下载的地方.于是就拿起自学的python爬虫,自己动手丰衣足食. 运行环境:Windows7,python3.7 操作步骤: 1.打开选好的评书主页面 ...
- 爬虫爬评书吧_爬虫 + 小程序 自定义开发一个听书程序
最近工作之余会听听评书,但主流门户收费加广告着实让人烦躁.作为IT人,怎能如此顺应别人家的产品规则. 下面以 python + taro 为例,写一个爬虫 + 小程序的播放应用: 最终实现的效果如下: ...
- 图片链接用src不能被爬虫爬到吗_爬虫:带你一键爬取王者荣耀英雄皮肤壁纸
一.前言 王者荣耀这款手游,想必大家都玩过或听过,游戏里英雄有各式各样的皮肤,制作得很精美,有些拿来做电脑壁纸它不香吗.本文带你利用Python爬虫一键下载王者荣耀英雄皮肤壁纸. 1. 目标 创建一个 ...
- 微信红包雨怎么抢_1月26日晚8点微信红包雨发放时间表 怎么抢红包全攻略
1月26日晚8点微信红包雨发放时间表 怎么抢红包全攻略 据1月26日消息,微信官方将在今晚8点开启一轮红包雨[在哪里抢],用户通过手机摇一摇的方式可抢红包. 延伸阅读: 抢红包攻略: 1月26日晚8点 ...
- python批量下载静态页面_爬虫实战之,爬取壁纸,批量下载
一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按 ...
最新文章
- 张量解释——深度学习的数据结构
- java OpenCv Mat 类的基本操作(3)
- linux编程:getenv,putenv,setenv
- virtualenv在windows10下面使用的注意事项
- 工作学习资料备份记录
- Kafka-batch.size属性
- 浙江省计算机数据库三级报名,浙江省计算机等级考试三级数据库技术
- vsc写vue生成基本代码快捷键_Vscode添加用户代码实现基础模板快速调用
- java中class.forName(str)的作用
- (源代码)用Python制作疫情的实时数据地图(PS:全国以及每个省)
- 2020年内蒙古自治区第十五届大学生程序设计竞赛榜单
- 1. NET 6.0 前言
- arcgis剔除异常值栅格计算器_arcgis 栅格计算器(Spatial Analyst/Raster Calculator)
- 微生物群落基于KEGG预测功能的丰度分布图绘制
- 计算机休眠是打不开,电脑自动进入睡眠模式打不开是为什么
- html列表横向变纵向,手机版利用 CSS 将横向表格转换成竖向列表显示
- 真的有人会喜欢一个程序员?
- [概率论]图像里的“白噪声”——电视机搜不到台时雪花斑点的形成原因 (不信谣,不传谣,与宇宙微波背景辐射没有任何关系)
- 直播软件搭建音视频开发中的视频采集
- Zemax光学设计(十一) —— 扫描系统设计