Python菜鸟教程(一)-爬b站数据

BeautifulSoup

BeautifulSoup- 我们爬去网站主要用到的库

安装BeautifulSoup
pip install beautifulsoup4

安装了python的同学应该都知道python的包管理工具pip,这里就不赘述了。

切入点

爬网站主要还是找到一个url,当然有api是最好的,很容易就可以爬到自己想要的数据:

url:http://api.bilibili.com/archive_stat/stat?aid=xxx

# ps
b站这个请求太频繁的拉数据的话,会被封ip的,我现在正在用手机开着热点,一边在拉数据,一边在写这篇教程

大概抓1w条左右会被检测出来,然后封个5分钟左右ip,很多大佬说,做爬虫要多弄个代理,不会玩。

google了一下,b站用的大概是爬取间隔自适应。就是已经限制了你这个IP的抓取,就不要傻傻重复试,怎么滴也得休息一会。网易云音乐操作起来比较简单,sleep一下就好了。其实sleep的间隔应该按情况累加,比如第一次sleep 10秒,发现还是被约束。那么就sleep 20秒… 这个间隔的设置已经自适应的最终效果是经验值。

贴代码

import json
from bs4 import BeautifulSoup
from urllib import request

def getScript(url):
        head = {}
        # 这边是要拼个请求头的
        head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'
        req = request.Request(url, headers = head)
        response = request.urlopen(req)
        html = response.read()
        soup = BeautifulSoup(html, 'lxml')
        data = json.loads(soup.text)
        if (data.get("code") ==40003):
            return False;
        else:
            return data.get("data");

if __name__=="__main__":
    for i in range(159007,754613):
        url = 'http://api.bilibili.com/archive_stat/stat?aid='+str(i)
        str1 = getScript(url)
        if str1:
             # IO操作
            with open('D:/result.txt','a+',encoding='utf-8', errors='ignore') as f:
                  f.write(str(str1))
            print(str1)

爬取的部分txt

bilibili.txt

一夜之后

经过一夜的爬取,让我们看下爬取的数据

SELECT COUNT(1) FROM video
-- 216997

select aid av号,`view` 播放量,danmaku 弹幕,favorite 喜欢,coin 硬币,`share` 分享 from video where `view`=(select max(`view`) from video);
-- 225094   8024979 471856  25306   15497   10924

抓取到的这个av号去bilibili看一下,居然是天降之物,居然不是fate!

让我们看一下fate的链接:

https://bangumi.bilibili.com/anime/1650

– 哇,一声就哭出来了,mmp

然后搜一下天降之物,有两个链接:

http://www.bilibili.com/video/av225094/
https://bangumi.bilibili.com/anime/971/

推断:

b站可能把高点击量的视频都用,一下链接了:

https://bangumi.bilibili.com/anime/id号/

可能也想由http转https,让网站更安全。

好吧,那接下来我们的目标很明确了,就是抓https://bangumi.bilibili.com/anime/id号/这个链接的数据了。

后记

python还是非常有意思的,尤其是从爬虫这里入门。

跟java比起来更加的轻巧,刚开始学,有些不会的东西也不需要太深究,跟着大佬们敲一敲。

备注一些学习python的资料:

廖雪峰 - Python教程

GitHub上的一些资源

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值