import requests, re, time, os

category_dic = {
"all": "全站榜",
"origin": "原创榜",
"rookie": "新人榜",
} day_dic = {1: "日排行榜", 3: "三日排行榜", 7: "周排行榜", 30: "月排行榜"}
all_or_origin_dic = {
0: "全站",
1: "动画",
168: "国创相关",
3: "音乐",
129: "舞蹈",
4: "游戏",
36: "科技",
188: "数码",
160: "生活",
119: "鬼畜",
155: "时尚",
5: "娱乐",
181: "影视",
} bangumi_dic = {
"番剧": 1,
"国产动画": 4,
} cinema_dic = {
"记录篇": 177,
"电影": 23,
"电视剧": 11,
} rookie_dic = {
0: "全站",
1: "动画",
3: "音乐",
129: "舞蹈",
4: "游戏",
36: "科技",
188: "数码",
160: "生活",
119: "鬼畜",
155: "时尚",
5: "娱乐",
181: "影视",
} BaseDict = {
"all": all_or_origin_dic,
"origin": all_or_origin_dic,
# "bangumi": bangumi_dic,
# "cinema": cinema_dic,
"rookie": rookie_dic,
} dic = {
"all": 1,
"origin": 2,
"rookie": 3,
} base_path = "D:\图片\\bilibili_ranking" # 文件保存的位置 def get_url():
for first in category_dic.keys():
if first in ["all", "origin", "rookie"]:
for second in BaseDict.get(first).keys():
for third in day_dic.keys():
url = "https://api.bilibili.com/x/web-interface/ranking?jsonp=jsonp&rid={}&day={}&type={}&arc_type=0&callback=__jp1".format(
second, third, dic.get(first))
yield url, [first, second, third] s = requests.Session()
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
"Referer": "https://www.bilibili.com/ranking/all/0/0/3"
}
url_list = get_url()
for url in url_list:
print("向{}发请求".format(url[0]))
response = s.get(url=url[0], headers=headers)
data = response.text.replace('"', "")
pattern = r'.*?author:(?P<author>.*?),.*?play:(?P<play>.*?),.*?pts:(?P<pts>.*?),.*?title:(?P<title>.*?),'
result_list = re.findall(pattern, data)
path = os.path.join(base_path, "{}-{}-{}".format(category_dic.get(url[1][0]),
rookie_dic.get(url[1][1]) or all_or_origin_dic.get(url[1][1]),
day_dic.get(url[1][2])))
f = open(path + ".txt", "a", encoding="utf-8")
print('正在写入....{}'.format(path + ".txt"))
for index, res in enumerate(result_list):
# print("排名:{}".format(index + 1))
# print("作者:{}".format(res[0]))
# print("播放量:{}".format(res[1]))
# print("综合分数:{}".format(res[2]))
# print("标题:{}".format(res[3]))
# print("-" * 90)
f.write("排名:{}\n".format(index + 1))
f.write("标题:{}\n".format(res[3]))
f.write("作者:{}\n".format(res[0]))
f.write("播放量:{}\n".format(res[1]))
f.write("综合分数:{}\n".format(res[2]))
f.write("-" * 90 + "\n")
f.close()
time.sleep(2)

python3爬虫-爬取B站排行榜信息的更多相关文章

  1. python爬取b站排行榜

    爬取b站排行榜并存到mysql中 目的 b站是我平时看得最多的一个网站,最近接到了一个爬虫的课设.首先要选择一个网站,并对其进行爬取,最后将该网站的数据存储并使其可视化. 网站的结构 目标网站:bil ...

  2. Python爬取B站视频信息

    该文内容已失效,现已实现scrapy+scrapy-splash来爬取该网站视频及用户信息,由于B站的反爬封IP,以及网上的免费代理IP绝大部分失效,无法实现一个可靠的IP代理池,免费代理网站又是各种 ...

  3. 爬虫---爬取b站小视频

    前面通过python爬虫爬取过图片,文字,今天我们一起爬取下b站的小视频,其实呢,测试过程中需要用到视频文件,找了几个网站下载,都需要会员什么的,直接写一篇爬虫爬取视频~~~ 分析b站小视频 1.进入 ...

  4. Node.js爬虫-爬取慕课网课程信息

    第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...

  5. python3爬虫爬取网页思路及常见问题(原创)

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

  6. python3爬虫-爬取58同城上所有城市的租房信息

    from fake_useragent import UserAgent from lxml import etree import requests, os import time, re, dat ...

  7. python3 爬虫---爬取糗事百科

    这次爬取的网站是糗事百科,网址是:http://www.qiushibaike.com/hot/page/1 分析网址,参数''指的是页数,第二页就是'/page/2',以此类推... 一.分析网页 ...

  8. python3 爬虫---爬取豆瓣电影TOP250

    第一次爬取的网站就是豆瓣电影 Top 250,网址是:https://movie.douban.com/top250?start=0&filter= 分析网址'?'符号后的参数,第一个参数's ...

  9. python3 爬虫爬取深圳公租房轮候库(深圳房网)

    深圳公租房轮候库已经朝着几十万人的规模前进了,这是截至16年10月之前的数据了,贴上来大家体会下 所以17年已更新妥妥的10W+ 今天就拿这个作为爬虫的练手项目 1.环境准备: 操作系统:win10 ...

随机推荐

  1. HTML中的图片

    在一开始时,Web仅有文本,那真的是很无趣.幸运的是,没过多久网页上就能嵌入图片和其他有趣的内容了.虽然还有许多其他类型的多媒体,但是从地位比较低的<img>元素开始是符合逻辑的,它常常被 ...

  2. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

  3. winform基础控件-例子学习

    1.如图实现整数计算器 ComboBox控件: Items属性:添加集合中的项. this.comoper.Items.AddRange(new object[] { "+", & ...

  4. 表空间(TableSpace)

    我们知道Oracle数据库真正存放数据的是数据文件(Data File),oracle表空间(tablespace)实际上是一个逻辑的概念,在物理上是并不存在的,那么把一组data files捻在一起 ...

  5. 判断计算机是否可以ping通

    #!/usr/bin/python # -*- coding: utf-8 -*- import os of = open('servers.txt','r') ofw=open('servers_p ...

  6. My personal website:http://47.94.240.229:8080/yjh/project/

    My personal website:  http://47.94.240.229:8080/yjh/project/

  7. XHTML基本知识

    XHTML 是什么? XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language). XHTML 的目标是取代 HTML. XHTML 与 HTML ...

  8. MySQL5.7 不同操作系统下的主从配置

    1. 服务器信息 1.1 Ubuntu 17.0.4  (Master服务器) MySQL版本: 5.7.20 主数据库:dslbcp IP: 192.168.12.130 3306 1.2 Wind ...

  9. sed.md

    SED sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用s ...

  10. Tableau10.4中智能显示点击后消失的解决方案

    如果你的电脑是Win10,并且是高分屏,可能会出现和我一样的问题,就点击智能显示后,发现找不到了. 那么解决方案就是: 这样就能找到智能显示了.