吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2654|回复: 5
收起左侧

[Python 转载] 哔哩哔哩番剧(新人投名状)

  [复制链接]
zac7 发表于 2019-8-14 15:04
今天刚刚注册52pojie,平时每天都有看。
但是因为某些原因今天才注册这个账号,作为一个新人,特别像迫不及待的跟大家探讨,交流。
楼主学18年学的python,19年没有用过,导致忘得差不多了,所以我想把python给捡起来。emmmm,希望大家共同进步吧,作为发布的第一个帖子,我选择的是一个哔哩哔哩的爬取,其实也没啥难度。
"""
1. 分析返回番剧列表信息的真正请求。用requests包构造请求,得到响应的json数据。(20+10)
2. 爬取第一页信息,控制台print两个字段番剧名、缩略图网址。(20)
3. 前十页,新增字段 播放量、投稿时间。按投稿时间倒序,保存为csv或xlsx格式。(20+20)
提示:减少无用的又不容易构造的可选参数,不影响请求。
request_url=https://api.bilibili.com/x/web-interface/newlist?callback=jqueryCallback_bili_42885308963105384&rid=33&type=0&pn=1&ps=20&jsonp=jsonp&_=1546829716288
"""

上面的注释是当时做这个东西的要求,以及分数占比
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-# [url=home.php?mod=space&uid=238618]@Time[/url]    : 2019/1/7 10:53
# [url=home.php?mod=space&uid=686208]@AuThor[/url]  : Zachary


import requests
import json
import time
import csv
# from lxml import etree
# from urllib import request
class Bilispider(object):
    def __init__(self):
        self.url='https://api.bilibili.com/x/web-interface/newlist?'
        # 伪装请求头
        self.header={

            'Referer': 'https://www.bilibili.com/v/anime/serial/?spm_id_from=333.334.b_7072696d6172795f6d656e75.8',
            'Host': 'api.bilibili.com',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
        }
        self.save_header()

        # self.html=''

    def get_html(self):
        # 请求html
        for i in range(1, 11):
            print(f'正在爬取第{i}页')
            params={
                'rid':33,
                'type':0,
                'pn':i,
                'ps':20

            }
            # 拼接url,设置爬取 i页数
            # 限制爬取速度2S,
            time.sleep(5)
            # 请求源代码
            resp = requests.get(url=self.url,params=params,headers=self.header).text
            self.parse_html(resp)


    def parse_html(self,resp):
        # json解析
        html_dict = json.loads(resp)
        # print(html_dict)
        # 获取archives里面的数据
        data = html_dict['data']['archives']
        #  遍历json里data大字典
        list = []
        for content in data:
            title = content['title'] # 标题
            # print(title)
            img = content['pic'] # 照片
            view = content['stat']['view'] # 播放量
            ctime = content['ctime'] # 投稿时间
            if ctime:
                # 将投稿时间转换为指定格式的日期
                timeArray = time.localtime(ctime)
                otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)

                new = [title,img,view,otherStyleTime]
                list.append(new)
                self.save_svg(list)
            print(f'番剧名:{title}\n缩略图:{img}\n播放量:{view}\n投稿时间:{otherStyleTime}')
    def save_svg(self, new):
        # 保存到本地文件
        with open('bili番剧.csv',mode='w',newline='', encoding='utf-8')as f:
            writer = csv.writer(f)
            for n in new:
                writer.writerow(n)

    def save_header(self):
        header = [['番剧名', '图片链接', '播放量', '投稿时间']]
        with open('bili番剧.csv', mode='w', newline='', encoding='utf-8') as f:
            writer = csv.writer(f)
            writer.writerow(header)

    def run(self):
        self.get_html()
        self.save_svg(new=self.parse_html)


if __name__ == '__main__':
    s=Bilispider()
    s.run()

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
RCNG12333 + 1 用心讨论,共获提升!
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
绝版coco + 1 谢谢@Thanks!
IMRE + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

胡椒粉 发表于 2019-8-15 09:51
看不懂,哈哈
绝版coco 发表于 2019-8-14 18:47
 楼主| zac7 发表于 2019-8-14 22:07
beifangnongfu 发表于 2019-8-14 23:29
我不懂,学习学习
 楼主| zac7 发表于 2019-8-15 10:46

全是注释啊兄弟,你再打打基础
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 22:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表