即刻APP所有用户信息爬虫

本文介绍了一款即刻APP用户信息爬虫的实现过程,通过分析即刻网页版接口,采用广度优先遍历策略,从官方大V账号开始爬取关注者信息。遇到动态更新的x-jike-access-token值问题,通过发现app_auth_tokens.refresh包解决了自动更新问题。目前爬虫已爬取60万用户,后续速度会因重复数据增加而减慢。完整代码已上传至GitHub。
摘要由CSDN通过智能技术生成

即刻APP所有用户信息爬虫

作为即刻的一个老(si)用(zhong)户(fen),不得不向大家推荐这款非常棒的APP,里面的人说话都好听,个个都是人才,借用瓦总的话说:有一种小镇特有的感觉。之前一直想爬取下来这个APP上面的用户,因为看到好多用户名特别有意思,还有好多盗版用户哈哈哈,所以闲着也是闲着,不如写个爬虫来爬一个这个做爬虫的软件。

一、思路

由于即刻目前出了一个网页beta版,相对于APP直接抓包来说比较方便,所以就针对这个网站即刻网页版来进行爬取。然而要想爬取这个软件上的所有用户信息来说并不是想象中的那么简单,首先这个网站的用户个人界面不是按照完全有规律的id进行排序的,每个人都有自己的username,所以不能直接找规律穷举来爬,必须找到比较合适的接口,然后我发现可以根据每个人的被关注信息来进行广度优先遍历,即先找到一个大v号比如即刻首席哈哈官,这个官方号有大约八万人关注,然后我们就可以把这八万人爬取到数据库中,然后再爬取关注这些人的账号到数据库中,这样遍历理论上是可以把所有用户信息爬取到的。

二、爬取准备

1,接口分析

首先进行分析这个关注人数的接口,通过我的观察发现即刻的个人关注人数的接口是非常有规律的,当然像即刻这种动态网站是不可能爬取html界面来获取信息的,肯定是要分析后台的json包来进行动态爬取。
在这里插入图片描述
直接打开后台找到名字叫做getFollowerList的包,分析这个包的header信息我们发现每次请求的url都是一样的,只是通过不同的request payload数据post过去得到关注者的信息。由于这个关注列表是下拉动态加载的,每次下拉返回20个人的关注信息,故只要找到每次下拉的loadmorekey就能得到下一个json包了。
在这里插入图片描述
每次的loadmorekey都可以在上一个得到的getfollowedList返回包里得到,这样我们就找到了规律,就能遍历得到一个人他的所有的关注人的信息了,然后每次可以通过换request payload里面的username值来获取不同人的关注人信息。这样我们就有了大体的爬取思路了。

2,x-jike-access-token值的更新

当我写完爬虫来进行爬取的时碰到了一个比较头疼的问题,就是这个网站的cookies是动态更新的,而我却一直没找到他是怎么更新的,所以我刚开始爬的时候不能完全自动爬取,也就是爬取大概十分钟就要手动更新一下x-jike-access-token值。当我正苦恼于解决这个问题上网无限找关于cookies保持的资料时,我无意中又看了一下即刻的后台,突然发现又突然多了一个数据包

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,以下是一个简单的Python爬虫手机App信息的教程: 1. 导入库 在Python中,你需要导入一些库来进行爬虫使用以下代码导入所需库```python import requests from bs4 import BeautifulSoup ``` 2. 发送请求 使用`requests`库向网站发送请求并获取响应。例如,要获取“https://www.qimai.cn/rank”的内容,可以使用以下代码: ```python url = 'https://www.qimai.cn/rank' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' } response = requests.get(url, headers=headers) ``` 3. 解析内容 使用`BeautifulSoup`库解析响应内容。例如,要获取网站上App的信息,可以使用以下代码: ```python soup = BeautifulSoup(response.text, 'html.parser') app_list = soup.find_all('tr', attrs={'class': 'table-row'}) for app in app_list: app_name = app.find('a', attrs={'class': 'market-name'}).text.strip() app_category = app.find_all('span', attrs={'class': 'category'})[0].text.strip() app_company = app.find_all('span', attrs={'class': 'company'})[0].text.strip() app_download = app.find_all('span', attrs={'class': 'download'})[0].text.strip() print(app_name, app_category, app_company, app_download) ``` 4. 数据存储 你可以将取的数据保存到本地文件中。例如,要将App的信息保存到本地文件“app_info.txt”中,可以使用以下代码: ```python with open('app_info.txt', 'w') as file: for app in app_list: app_name = app.find('a', attrs={'class': 'market-name'}).text.strip() app_category = app.find_all('span', attrs={'class': 'category'})[0].text.strip() app_company = app.find_all('span', attrs={'class': 'company'})[0].text.strip() app_download = app.find_all('span', attrs={'class': 'download'})[0].text.strip() file.write(f'{app_name}\t{app_category}\t{app_company}\t{app_download}\n') ``` 以上就是一个简单的Python爬虫手机App信息的教程,希望对你有所帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值