python3爬虫-爬取B站排行榜信息
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站排行榜信息的更多相关文章
- python爬取b站排行榜
爬取b站排行榜并存到mysql中 目的 b站是我平时看得最多的一个网站,最近接到了一个爬虫的课设.首先要选择一个网站,并对其进行爬取,最后将该网站的数据存储并使其可视化. 网站的结构 目标网站:bil ...
- Python爬取B站视频信息
该文内容已失效,现已实现scrapy+scrapy-splash来爬取该网站视频及用户信息,由于B站的反爬封IP,以及网上的免费代理IP绝大部分失效,无法实现一个可靠的IP代理池,免费代理网站又是各种 ...
- 爬虫---爬取b站小视频
前面通过python爬虫爬取过图片,文字,今天我们一起爬取下b站的小视频,其实呢,测试过程中需要用到视频文件,找了几个网站下载,都需要会员什么的,直接写一篇爬虫爬取视频~~~ 分析b站小视频 1.进入 ...
- Node.js爬虫-爬取慕课网课程信息
第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...
- python3爬虫爬取网页思路及常见问题(原创)
学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...
- python3爬虫-爬取58同城上所有城市的租房信息
from fake_useragent import UserAgent from lxml import etree import requests, os import time, re, dat ...
- python3 爬虫---爬取糗事百科
这次爬取的网站是糗事百科,网址是:http://www.qiushibaike.com/hot/page/1 分析网址,参数''指的是页数,第二页就是'/page/2',以此类推... 一.分析网页 ...
- python3 爬虫---爬取豆瓣电影TOP250
第一次爬取的网站就是豆瓣电影 Top 250,网址是:https://movie.douban.com/top250?start=0&filter= 分析网址'?'符号后的参数,第一个参数's ...
- python3 爬虫爬取深圳公租房轮候库(深圳房网)
深圳公租房轮候库已经朝着几十万人的规模前进了,这是截至16年10月之前的数据了,贴上来大家体会下 所以17年已更新妥妥的10W+ 今天就拿这个作为爬虫的练手项目 1.环境准备: 操作系统:win10 ...
随机推荐
- Android 图片旋转
拍照后的照片有时被系统旋转,纠正步骤如下: 1.先读取图片文件被旋转的角度: /** * 通过ExifInterface类读取图片文件的被旋转角度 * @param path : 图片文件的路径 * ...
- Populating Next Right Pointers in Each Node 设置二叉树的next节点
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- Output assignment statements in the output statement
package output.statement; public class OutputAssignmentStatementsInTheOutputStatement { public stati ...
- postman具体讲解
postman 简单教程-实现简单的接口测试 最近开始做接口测试了,因为公司电脑刚好有postman,于是就用postman来做接口测试,哈哈哈哈,...postman 功能蛮强大的,还比较好用,下面 ...
- 从零开始——JSON ARRAY&JSON OBJECT
在学习“基于角色的权限”的例子中,遇到了json object和json array,因此在一番学习之后对此要点进行粗略整理. 参考: https://my.oschina.net/u/2601842 ...
- 爬虫入门之scrapy模拟登陆(十四)
注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或# COOKIES_ENABLE ...
- [翻译] HTKDynamicResizingCell
HTKDynamicResizingCell https://github.com/henrytkirk/HTKDynamicResizingCell Subclassed UITableView/U ...
- cocos2dx中node的pause函数(lua)
time:2015/05/14 描述 lua下使用node的pause函数想暂停layer上的所有动画,结果没有效果 1. pause函数 (1)cc.Node:pause 代码: void Node ...
- 企业级Apache详解2
http_conf主配置说明 root@lamp01 apache]# grep -Ev "#|^$" conf/httpd.conf DocumentRoot "/us ...
- WORD列表缩进的文本起始点
Figure 1 Figure 2 Figure 3 编号位置以刻度尺为起点0.74厘米(2个字符间距),文本缩进以刻度尺为起点2.96厘米(8个字符间距) 以上两者相减得到的值正好=特殊格式悬挂缩进 ...