Py学习  »  Python

Python爬虫之微打赏爬虫

Python爱好者社区 • 8 年前 • 932 次点击  

 


作者:罗罗攀  

Python爱好者社区专栏作者   Python爬虫爱好者

博客地址:http://www.jianshu.com/u/9104ebf5e177



爬取微打赏的数据

网站分析

打开网站,翻页网页不变,看看是post的请求,很好办,直接把参数怼进去,这里只要切换page就能进行翻页。



json格式


这里post返回的是json数据,解析json数据就行,小技巧:看preview,解析起来嗖嗖哒(一般人我不告诉他,记得来波赞)。这里需要提取活动的名称,id和参与打赏的人数。这个后面详细页用的到。



详细页


依旧是post,依旧是json数据,这里的参数pro_id为之前的爬取的id,这一页20个信息,通过前面的参与打赏人数构造出有多少页,继续怼参数。


代码

import requests
import json
import math

def get_sup_info(url,page):
    params = {
        'ajaxtype':1,
        'page':page,
        'category':1,
        'pageSize':8
    }
    cookies = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
        'Cookie':'acw_tc=AQAAAKLQ3U/WTAYAggq7PZ24WOlm9vQW; PHPSESSID=r0nbvk7hppjftegk4fpt9cu535; _uab_collina=150094753858198811653567; mdswv=v1.0; mdsa=MD-STICS-5976a44746eca; mdss=6-o; mdsf=md; mdsff=www_so_com; ci_session=a%3A5%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22caefb4c752d5877e1c5aa4aa5df37e99%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A14%3A%22123.57.117.133%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A109%3A%22Mozilla%2F5.0+%28Windows+NT+6.1%3B+WOW64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F57.0.2987.133+Safari%2F537.36%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1500949741%3Bs%3A9%3A%22user_data%22%3Bs%3A0%3A%22%22%3B%7D688590410f74ae5570846b68edaa6a67; u_asec=090%23qCQXOTXPXpnXuvi0XXXXXuS8vzgEjU05DQJMOF5UA9EUDzQmhY5%2BGl8VXvXQMcYTnuxiXXf8AfIwSTQXU6hnXXa3HoQCh9T4gY73OjjeG%2FXUHYVms%2BhnDXG3Hoqhh9kvan73O51TXvXuLWQ5Hfv5oTQXaOXTs7%2BZhPNGlTQXFdOVReD%2FItB4na8Dnin5Lm97WiM5ra4hxeC7S3lO6usAcNvwY4vCdr7HxBzviaxEIhQGz7LKItio9zCD7XwC65ZVdC6hXZCHFeYVapLaISEbstnWekYGxg9lzXcEX5lZOhntBpwW6glEhtlW9kNvXvXKxprV%2B%2FSVO5OeHhobpDlHgCz6CITLvzBvaOviXXFKMieaRAn%3D; SERVERID=75c0ee4e77ef78c56ac6e5a297fdd0b8|1500949742|1500947526'
    }
    html = requests.post(url, data=params, headers=cookies)
    json_data = json.loads(html.text)
    des = json_data['des']
    for data in des:
        name = data['name']
        id = data['id']
        pay_count = data['pay_count']
        all_page = math.ceil(int(pay_count)/20)
        for i in range(1,int(all_page)+1):
            get_app_info(i,id,name)


def get_app_info(page,id,name):
    params = {
        'pro_id': id,
        'type': '1',
        'page': page,
        'pageSize': '20'
    }
    cookies = {
        'User-Agent':'xx',
        'Cookie':'xx'
    }
    html = requests.post('https://wds.modian.com/ajax_backer_list',data=params,headers=cookies)
    json_data = json.loads(html.text)
    datas = json_data['data']
    for data in datas:
        nickname = data['nickname']
        money = data['total_back_amount']
        print(name,nickname,money)

if __name__ == '__main__':
    for i in range(1,10):
        get_sup_info('https://wds.modian.com/ajax_first',i)

请求头加上,这里就爬取了10页做实验,打印输出没有进行数据存储。


福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复课程即可获取:

1.崔老师爬虫实战案例免费学习视频。

2.丘老师 数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/2ajdIoBkzD
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3684