利用python request细雨筹爬虫

       家里人生了重病,已经没有什么好办法了,最近在细雨筹上募捐,非常感谢这些捐款者,下面我将实现用python爬取捐款者的名单。

 

1.首先打开募捐页面https://mall.gccaifu.com/h5/successCaseminone.html?id=694&from=singlemessage&isappinstalled=0,我用的chrome浏览器,F12打开开发者模式,并勾选Preserve log选项,用以保存返回的item。

2.刷新页面,使用chrome浏览器插件EditThisCookie可以发现此时该页面有一个Cookie,Cookie的名字是PHPSESSID

3.接下来寻找刷新页面返回的哪个item产生了这个Cookie,找啊找,找到了,getOpenid这个item的Response Cookie是PHPSSSSID

4.看一下getOpenid的Header,在General里看到请求方式为get,下面构造Request Headers模拟请求getOpenid

#get Cookie
import requests
import json
url1 = 'https://mall.gccaifu.com/public/index/wechat/getOpenid'
header1 ={
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Host': 'mall.gccaifu.com',
'Referer': 'https://mall.gccaifu.com/h5/successCaseminone.html?id=694&from=timeline&isappinstalled=0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
r1 = requests.get(url1, headers=header1)
cookies=r1.cookies.get_dict()
cookies
输出:{'PHPSESSID': '96fbae30a1a32dde0a088c4a2989a438'}

5.为什么要拿Cookie呢,我的目的是要拿到捐款者的信息,继续往下找,找到一个juanpage的item,它response了一个json文本,果然里面包含了我们需要的捐款者相关的信息

6. 模拟请求juanpage,这是一个post请求,可以看到它需要我们上一步产生的Cookie PHPSSSSID,而且在request header中,这个Cookie被用到了(这个juanpage每次返回5个捐款者的信息,表单里num这个数值按照步进值5递增)

#获取返回的json,取微信昵称字段,已字典形式保存
juan_dict = dict()
juan_dict['wechat_nick'] = []
def json2dict(juan_dict,r):
    for ele in r.json()['data']['juanlist']:
        juan_dict['wechat_nick'].append(ele['wechat_nick'])
             
url3 = 'https://mall.gccaifu.com/public/index/Contribution/juanpage'

header3 ={
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Length': '18',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'PHPSESSID='+cookies['PHPSESSID'],##########################手动添加Cookie
'Host': 'mall.gccaifu.com',
'Origin': 'https://mall.gccaifu.com',
'Referer': 'https://mall.gccaifu.com/h5/successCaseminone.html?id=694&from=timeline&isappinstalled=0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}

import time
for i in range(5,975,5):
    form_data3 ={
    'item_id': 694,
    'num': i
    }
    time.sleep(0.1)
    r3 = requests.post(url3, data=form_data3,headers = header3)
    json2dict(juan_dict,r3)

7.将捐款者的微信昵称词云显示出来(祝各位好心人一生平安!)

#词云显示
import matplotlib.pyplot as plt
from wordcloud import WordCloud
juan_txt=' '.join(juan_dict['wechat_nick'])
my_wordcloud = WordCloud(font_path='simhei.ttf',width=3000,height=2000,max_font_size=300).generate(juan_txt)
my_wordcloud.to_file("wc.png")
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

 

下面是细雨筹捐款二维码,希望各位路过的好心人能够伸出援助之手,积少成多,祝各位好心人一生平安,永无病痛!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值