大神使用Python爬取微信群里的百度云资源( 二 )


弄清楚了 cookie 的情况 , 可以像下面这样构造请求头 。
def __init__(self,bduss,stoken,bdstoken):self.bdstoken = bdstokenself.headers = {'Accept': '*/*','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.8','Connection': 'keep-alive','Content-Length': '161','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Cookie': 'BDUSS=%s;STOKEN=%s;' % (bduss, stoken),'Host': 'pan.baidu.com','Origin': '','Referer': '/s/1dFKSuRn?errno=0 --tt-darkmode-bgcolor: #BDBEBE;">cookie, 其他的请求头参数可以参照手动转存时抓包的请求头 。 这两个 cookie预留出来做参数的原因是cookie 都是有生存周期的 , 过期了需要更新 , 不同的账号登录也有不同的cookie 。
参数分析:
接下来分析参数 , 点击【Cookies】右边的【Params】查看参数情况 。 如下:
大神使用Python爬取微信群里的百度云资源文章插图
上面的query string(也就是?后跟的参数)里 , 除了框起来的shareid、from、bdstoken需要我们填写以外 , 其他的都可以不变 , 模拟请求的时候直接抄下来 。
前两个与分享的资源有关 , bdstoken与登录的账号有关 。 下面的form data里的两个参数分别是资源在分享用户的网盘的所在目录和刚刚我们点击保存指定的目录 。
所以 , 需要我们另外填写的参数为:shareid、from、bdstoken、filelist 和 path , bdstoken 可以手动转存抓包找到 , path根据你的需要自己定义 , 前提是你的网盘里有这个路径 。 其他三个需要从分享链接里爬取 , 这个将在后面的【爬取shareid、from、filelist , 发送请求转存到网盘】部分中进行讲解 。
码字不易废话两句:有需要学习资料的或者有技术问题交流可以私信小编发送 “01” 即可
搞清楚了参数的问题 , 可以像下面这样构造转存请求的 url。
def transfer(self,share_id,uk,filelist_str,path_t_save):# 需要填写的参数 , 分别对应上图的shareid、from、filelist 和 path# 通用参数ondup = "newcopy"async = "1"channel = "chunlei"clienttype = "0"web = "1"app_id = "250528"logid = "你的logid"url_trans = "/share/transfer?shareid=%s" \" --tt-darkmode-bgcolor: #BDBEBE;">F12 打开控制台先分析一下源码 , 看看我们要的资源信息在什么地方 。 控制台有搜索功能 , 直接搜 “shareid” 。
大神使用Python爬取微信群里的百度云资源文章插图
定位到4个shareid , 前三个与该资源无关 , 是其他分享资源 , 最后一个定位到该 html 文件的最后一个标签块里 。 双击后可以看到格式化后的js 代码 , 可以发现我们要的信息全都在里边 。 如下节选:
yunData.SHAREPAGETYPE = "multi_file";?yunData.MYUK = "";yunData.SHARE_USER_NAME = "wang*****2121";yunData.SHARE_ID = "3927175953";yunData.SIGN = "7f166e9b5cf54486074ccce2fc0548e8aa50bdfb";yunData.sign = "7f166e9b5cf54486074ccce2fc0548e8aa50bdfb";yunData.TIMESTAMP = "1502175170";?yunData.SHARE_UK = "140959320";yunData.SHARE_PUBLIC = 0;yunData.SHARE_TIME = "1502150259";yunData.SHARE_DESCRIPTION = "";yunData.MYSELF = +false;yunData.MYAVATAR = "";?yunData.NOVELID = "";yunData.FS_ID = "3097042711872";yunData.FILENAME = "归来的福丹芝(58)";yunData.PATH = "\/我的资源\/归来的福丹芝(58)";yunData.PATH_MD5 = "4215521821664681584";yunData.CTIME = "1502150259";yunData.CATEGORY = "6";yunData.DOCPREVIEW = "";yunData.IS_BAIDUSPIDER = "";yunData.ARTISTNAME = "";yunData.ALBUMTITLE = "";yunData.TRACKTITLE = "";yunData.FILEINFO = [{"fs_id":3097042711872,"app_id":"250528","parent_path":"%2F%E6%88%91%E7%9A%84%E8%B5%84%E6%BA%90","server_filename":"归来的福丹芝(58)","size":0,"server_mtime":1502150215,"server_ctime":1494903797,"local_mtime":1494903797,"local_ctime":1494903797,"isdir":1,"isdelete":"0","status":"0","category":6,"share":"0","path_md5":"4215521821664681584","delete_fs_id":"0","extent_int3":"0","extent_tinyint1":"0","extent_tinyint2":"0","extent_tinyint3":"0","extent_tinyint4":"0","path":"\/我的资源\/归来的福丹芝(58)","root_ns":1653016720,"md5":"","file_key":""},{"fs_id":1057404338934434,"app_id":"250528","parent_path":"%2F%E6%88%91%E7%9A%84%E8%B5%84%E6%BA%90","server_filename":"多样的儿媳(46)","size":0,"server_mtime":1502150223,"server_ctime":1496696760,"local_mtime":1496696760,"local_ctime":1496696760,"isdir":1,"isdelete":"0","status":"0","category":6,"share":"0","path_md5":"5972282562760833248","delete_fs_id":"0","extent_int3":"0","extent_tinyint1":"0","extent_tinyint2":"0","extent_tinyint3":"0","extent_tinyint4":"0","path":"\/我的资源\/多样的儿媳(46)","root_ns":1653016720,"md5":"","file_key":""}];


推荐阅读