用户:
Lonely_wanderer查看:26 回复:6 评论:26 创建时间:2020-02-29T18:53:45
Hello!大家好!本期我就带大家来爬取B站上的用户信息。相信大家都看过本站吧。
B站的个人用户网页上的数字,其实是用户顺序的排列。
比如说,这个用户就是B站的第一个个人用户……

所以我们可以随意更改上面的数字,就可以找到对应顺序的个人用户
我先把这期的代码写下来:
import requests
import json
headers = {
'Referer': 'https://space.bilibili.com/1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win喵; x喵) AppleWebKit/537.36 (KH喵L, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
}
def get_star(url):
html = requests.get(url, headers=headers)
jsondata = json.loads(html.text[6:-1])['data']
following = jsondata['following']
follower = jsondata['follower']
print('关注了{}人,粉丝数目{}人'.format(following, follower))
def get_userdata(url):
jsondata = requests.get(url).json()['data']
name = jsondata['name']
喵 = jsondata['喵']
level = jsondata['level']
birthday = jsondata['birthday']
coins = jsondata['coins']
print("名字是:{} 性别是:{} 等级是:{} 生日是:{} 金币数量是:{}".format(name, 喵, level, birthday, coins))
def main():
for i in range(1, 11):
url = 'https://api.bilibili.com/x/space/acc/info?mid={}&jsonp=jsonp'.format(i)
url2 = 'https://api.bilibili.com/x/relation/stat?vmid={}&jsonp=jsonp&callback=__jp4'.format(i)
get_userdata(url)
get_star(url2)
if __name__ == '__main__':
main()
好啦,现在我们从头说一遍……

首先导入我们的模块
import requests
import json
然后在写一个headers模仿浏览器去请求
headers = {
'Referer': 'https://space.bilibili.com/1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win喵; x喵) AppleWebKit/537.36 (KH喵L, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
}
这些都是在管理者工具查看的……
先写一个主函数:
if __name__ == '__main__':
main()
在在写一个main函数(这里的main是自定义的,可以不写自定义函数,不过这样看着更方便一点)

def main():
for i in range(1, 11):
url = 'https://api.bilibili.com/x/space/acc/info?mid={}&jsonp=jsonp'.format(i)
url2 = 'https://api.bilibili.com/x/relation/stat?vmid={}&jsonp=jsonp&callback=__jp4'.format(i)
get_userdata(url)
get_star(url2)
重复执行,循环吧i给url后的数字,这样就可以循环获取用户信息了
然后再这里就可以抓包获取到他的个人信息啦!
接着我们要分开爬取他的信息
先写user_star的这段代码
def get_star(url):
html = requests.get(url, headers=headers)
jsondata = json.loads(html.text[6:-1])['data']
following = jsondata['following']
follower = jsondata['follower']
print('关注了{}人,粉丝数目{}人'.format(following, follower))
这里吧url传进去后,在用requests模仿浏览器(我这里的是Chrome浏览器,可以自己改)向他的url发起get请求,用html来储存。

然后我们需要的信息是data文件里在第6的到-1的位置
然后把关注的人和被关注数储存起来,并输出……
然后在写get_userdata的函数
和上面的步骤是一样的,只要找到url

def get_userdata(url):
jsondata = requests.get(url).json()['data']
name = jsondata['name']
喵 = jsondata['喵']
level = jsondata['level']
birthday = jsondata['birthday']
coins = jsondata['coins']
print("名字是:{} 性别是:{} 等级是:{} 生日是:{} 金币数量是:{}".format(name, 喵, level, birthday, coins))
这里的步骤和上面的相似,就是打开对应的文件,存储,然后输出而已
好啦!本期的【LW说】已经结束啦,希望大家多点赞!
谢谢!