给爷爬,用劲爬@@@

本人的第一份爬虫代码

API分析和思路

API地址:https://api.vc.bilibili.com/link_draw/v2/Doc/index

API参数:

type含义page_num是否有用
hot每日热榜
recommend推荐
new最新图片

看了看,也就每日热榜有点啥用。推荐会依据IP和cookie,对于我目前技术实现的爬虫而言,推荐的东西不一定好。最新图片emm算了吧。

那么每日热榜的API的完整链接就是:https://api.vc.bilibili.com/link_draw/v2/Doc/index?type=hot

查阅得到的json,发现图片均在img_scr标签中,保存下来就行了。

代码

这么简单的爬虫,没啥特殊逻辑,写就好了。

代码

import time
import os
import requests
import json
import jsonpath

#请求头
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'
}
#链接
url='https://api.vc.bilibili.com/link_draw/v2/Doc/index?type=hot'
#保存的文件夹
final_folder = './bili相簿/'

def htmlsrc(x):
    #二进制转str
    response=requests.get(x,headers=headers)
    file_obj=open('temp.html','w',encoding='utf-8')
    file_obj.write(response.content.decode('utf-8'))
    file_obj.close()
    file_obj=open('temp.html','r',encoding='utf-8')
    html=file_obj.read()
    file_obj.close()
    return html


def bili():

    html_json=json.loads(htmlsrc(url)) 
    for img_src in jsonpath.jsonpath(html_json,'$..img_src'):
        
        if img_src==None:
            continue
        file_name = final_folder+img_src.split(r'/')[-1]
        
        #本地有这张就跳过
        if os.access(file_name, os.F_OK):
            continue
            
        r = requests.get(img_src,headers=headers)
        with open(file_name, 'wb') as f:
            f.write(r.content)
            print(file_name)
        
        time.sleep(3)
        
if __name__ == '__main__':
    bili()

Last modification:February 14th, 2020 at 03:08 am
Compared with money, your comment could inspire me more.
相较于钱财,你的留言更能激发我创作的灵感