python 爬取百度网盘分享动态

本文介绍了如何使用Python爬虫抓取百度网盘的分享动态,将资源链接存入数据库并过滤重复及不良内容。然而,由于百度网盘改版取消动态分享,该程序已无法正常工作。文章主要涉及爬虫主入口、数据处理、敏感词过滤及数据库设计等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我之前写的一份爬虫,在百度网盘没有改版之前,有很多资源达人在他们的百度网盘动态分享自己的资源,后来我关注了一批分享影视资源的账号,程序定时去爬取他们的动态,将他们分享出来的百度网盘链接收入自己的数据库,写入数据库之前查询资源是否重复和不良关键词过滤,然后在另一端网页或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=25&start=%s&bdstoken=29b0093f2c
Python爬取百度网盘(Baidu Cloud)的内容需要谨慎操作,因为百度网盘通常有反爬机制,并且其API对外部开发者并不完全开放。然而,你可以通过一些间接的方式来进行部分自动化操作,比如利用百度云盘的Web界面,或者利用公开的一些工具库如`pywebdav`(针对WebDAV协议),但这往往受限于网站的访问策略。 下面是一个简单的示例,展示如何使用`requests`库来模拟浏览器登录并获取静态页面内容: ```python import requests from bs4 import BeautifulSoup # 登录URL、用户名、密码 login_url = 'https://passport.baidu.com/v2/login' username = 'your_username' password = 'your_password' # 创建登录请求 session = requests.Session() payload = { 'username': username, 'password': password, # 其他可能需要的参数,如安全验证等 } with session.post(login_url, data=payload) as resp: if resp.status_code == 200: # 获取登录后的cookie,然后可以发送到网盘链接 cookies = session.cookies.get_dict() # 网盘链接,假设为'https://pan.baidu.com/disk/home' disk_home_url = 'https://pan.baidu.com/disk/home' response = session.get(disk_home_url, cookies=cookies) # 解析HTML获取内容,这里仅用于演示,实际爬取可能需要解析特定的元素 soup = BeautifulSoup(response.text, 'html.parser') # 查找你想抓取的信息... content = soup.find('div', {'class': 'some_class'}) # 根据实际情况替换 print(content) ``` 请注意,这只是一个基础示例,实际过程中可能会遇到更多挑战,如验证码识别、动态加载内容等。而且频繁的网络爬虫行为可能会导致账户受限甚至封禁。在进行此类操作时,请遵守网站的使用条款和法律法规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值