Python爬取某站每周必看后上榜次数最多的竟然是他!

今天打开手机,打开某站,看起了本周的每周必看,一个疑问在我的脑中升起

目前上榜次数最多的up到底是谁!

目前上榜次数最多的up到底是谁!

目前上榜次数最多的up到底是谁!

恰好目前正好有一定的python基础,那就来玩一下吧

提前准备

对于爬取,我们首先需要分析的是他数据的存储格式和返回格式,通过对于某站的网络,我们锁定到下面两个网站

详细期数信息:https://api.xxxxx.com/x/web-interface/popular/series/one?number=XXX
所有期数信息:https://api.xxxxx.com/x/web-interface/popular/series/list

在这里插入图片描述

在这里插入图片描述
那这拿到信息之后,对于我们操作就很简单了,很明显这就是一个前后端分离的爬取,我们就只要对于对于接口的get请求进行模拟即可,首先我们获取到我们的最大期数,然后通过我们for循环遍历去模拟请求详细界面搞定!

在这里插入图片描述

实操开始

import requests
import time
import json
from collections import Counter
headers= {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0',
}
def getmaxweek():
    url = "https://api.xxxx.com/x/web-interface/popular/series/list"
    response = requests.get(url, headers=headers)
    response.encoding = response.apparent_encoding
    maxindex = json.loads(response.text)['data']['list'][0]['number']
    print(maxindex)
    return maxindex
def getlibilibili(url):
    names=[]
    response = requests.get(url,headers=headers)
    week = json.loads(response.text)['data']['list']
    for i in range(len(week)):
        name=week[i]['owner']['name']
        names.append(name)
    return names
namesum=[]
urls = "https://api.xxxx.com/x/web-interface/popular/series/one?number="
for i in range(1, getmaxweek()+ 1):
    url=urls+str(i)
    print(i)
    namesum.extend(getlibilibili(url))
name_counter = Counter(namesum)
print(name_counter)

就在我等待爬取完成的时候,这个时候
在这里插入图片描述
很明显,ip请求次数过多,导致ip被封,首先想到的就是加上time时间等待
不过很遗憾问题还是没有得到解决
还是1min内最多请求100次,超过100会锁IP
这个时候就要使用代理ip了,经过几番寻找找到一个巨好用的ip池,图形界面化的同时,直接把代理ip的API怼我脸上
真的很舒服,设置完成后直接复制就好了,获取方式放在最后
在这里插入图片描述

url = "http://xxxxx.user.xiecaiyun.com/api/proxies?action=getJSON&key=xxxxxx&count=200&word=&rand=false&norepeat=true&detail=false&ltime=&idshow=false"
response = requests.get(url)
data = response.json()
proxy = []
for proxy_info in data["result"]:
    proxy_ip = proxy_info["ip"]
    proxy_port = proxy_info["port"]
    proxy_url = f"http://{proxy_ip}:{proxy_port}"
    proxy.append(proxy_url)
print(proxy)

在这里插入图片描述

最后圆满完成任务!

怎么说,和大家预想的有差距吗,好多名字很熟悉但是已经很少活跃了,害
还有什么问题欢迎大家一起讨论!
说说你猜测的是谁呢,嘿嘿
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我小唐就好了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值