我之前写的一份爬虫,在百度网盘没有改版之前,有很多资源达人在他们的百度网盘动态分享自己的资源,后来我关注了一批分享影视资源的账号,程序定时去爬取他们的动态,将他们分享出来的百度网盘链接收入自己的数据库,写入数据库之前查询资源是否重复和不良关键词过滤,然后在另一端网页或APP,将数据库的资源展示出来,早期市面上的网盘资源搜索就是运用了这个原理,因为后来百度网盘改版,取消动态分享,程序目前已经无法正常运行,本文做个思路记录。
程序主入口,实现爬取百度网盘动态分享的功能都写在这个文件了,还负责调用其他文件函数,运行这个脚本就可以不间断的执行
# 主程序 import requests,re, json, time import random from mysql_db import * import threading from aidy_pc import * from yszx import * from defs import * header = { "Cookie": "", "Host": "pan.baidu.com", "Referer": "https://pan.baidu.com/pcloud/friendpage?type=follow&uk=2489863899&self=1", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36", "X-Requested-With": "XMLHttpRequest" } # 获取账号订阅的id list_uk = ['2489863899'] def getShareUser(): start = 0 for star in range(100): try: url = 'https://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=2489863899&limit=24&start=%d' % start follows_json = (requests.get(url, headers=header)).json() if len(follows_json['follow_list']) == 0: # 如果没有返回数据侧退出 break lists = follows_json['follow_list'] # 全部信息列表 for i in lists: # 遍历分离出每个订阅用户的信息 list_uk.append(i['follow_uk']) # 添加uk到列表 start = start + 24 time.sleep(random.randint(10, 25)) except: continue # if list_uk == '': # return False # else: # return list_uk # 程序开始 def gethtml(): # 爬取网盘资源函数 tu = getShareUser() # 这里是去获取我订阅的账号id if tu == False: # 如果获取不到订阅列表,则退出 pass else: start = 0 for uk in list_uk: # 循环订阅id for n in range(2): # 循环翻页 url = "https://pan.baidu.com/pcloud/feed/getdynamiclist?auth_type=1&filter_types=11000&query_uk=%s&category=0&limit&