python string转int_我用Python搞资源 [ 02 ]

这不是教程,所以没有基础的你看不懂也很正常,去后面点个赞就好。

一. 目标链接

上一个推送处理了一个不带密码的蓝奏云分享链接,这回处理一下带密码的分享链接。

https://lanzoux.com/b015ybdmh     密码:9n8z

为了能有一个合适的链接来练手,咱还特地注册了一下蓝奏云。注册了才发现,蓝奏云竟然只有文件夹分享才有密码,单个文件是没有密码的……而且是上传即生成外链,和百度网盘还是有很大差别的。

二. 页面解析

8442b5f7cfc3a352e770765cb36b8f1e.png

浏览器打开上述链接后就是输入密码的界面了。很明显,咱们要的东西需要输入密码才能看到。
在浏览器上查看一下网页源代码:

955a3caac61a0e60f346c77e54d5cc0c.png

可以看到一个密码提交靠的是一个ajax请求,提取一下这里面的有用信息:

  • 请求方式:

type : 'post',
  • 请求URL:

/filemoreajax.php
  • 请求数据:

data : { 
'lx':2,
'fid':2659087,
'uid':'138195',
'pg':pgs,
'rep':'0',
't':iaxwyd,
'k':igw906,
'up':1,
'ls':1,
'pwd':pwd
},

这边有一个需要注意的点,tk这两个参数对应的变量是会变化的,截图中tk两个参数对照iaxwydigw906这两个变量,过段时间刷新一下这两个变量名又会发生改变。

三. Python 库

本次使用的函数库:

  • Http 请求:Requests

  • Html 解析:BeautifuSoup

  • Js 代码转 xml:js2xml

  • Xml 解析:lxml

一般人遇到参数包括在script内部时通常是使用正则表达式来处理,但咱这边使用js2xml这个函数库,将 Js 代码转换成 Xml 格式,方便提取参数。

四. 开始写代码

懒得看过程的可以直接到最底部看最终的辣鸡代码。

1. 引用需要的函数库

#HTTP 请求
import requests
#HTML 解析
from bs4 import BeautifulSoup
#JS 代码转 XML
import js2xml
#XML 解析
from lxml import etree

2. 获取网页源码

def getHtml(url):
#获取网页源代码
return requests.get(url,headers = header).content.decode('utf-8')

3. 提取需要的 JS 代码

获取之后将我们需要的代码提取出来,也就是上面那张图标签里的东西:

def getSrcJsCode(html):
#获取包含参数的JS代码
soup = BeautifulSoup(html,'lxml')
scrLabel = soup.select('html script')
jsCode = soup.select('html script')[len(scrLabel)-2].string.replace(u'\u3000', ' ').replace(' ', ' ') #顺便删掉一些非法字符
return jsCode

4. 将 JS 代码转换成 XML

这边用到了 js2xml这个函数库,将 JS 代码转换成 XML 方便后续的参数提取:

def getXmlCode(jsCode):
#将Js转换成XML
src_text = js2xml.parse(jsCode, encoding='utf-8', debug=False)
return js2xml.pretty_print(src_text)

5. 从 XML 中获取各项参数

根据 XML 标签提取相应的参数:

def getParameters(src_tree,pwd):
#获取各项参数
parameters = {}
selector = etree.HTML(src_tree)

#先获取会随时间改变的变量名
tName = selector.xpath('//var/@name')[3]
kName = selector.xpath('//var/@name')[4]
titleName = selector.xpath('//var/@name')[0]
#先获取会随时间改变的变量名

parameters["title"] = selector.xpath('//var[@name="'+titleName+'"]/string')[0].text
parameters["fid"] = int(selector.xpath('//property[@name="fid"]/number/@value')[0])
parameters["lx"] = int(selector.xpath('//property[@name="lx"]/number/@value')[0])
parameters["uid"] = selector.xpath('//property[@name="uid"]/string')[0].text
parameters["rep"] = selector.xpath('//property[@name="rep"]/string')[0].text
parameters["up"] = int(selector.xpath('//property[@name="up"]/number/@value')[0])
parameters["ls"] = int(selector.xpath('//property[@name="ls"]/number/@value')[0])
parameters["t"] = selector.xpath('//var[@name="'+tName+'"]/string')[0].text
parameters["k"] = selector.xpath('//var[@name="'+kName+'"]/string')[0].text
return parameters

6. 获取文件列表

参数已经获取好了,接下来就是获取文件列表了。

def getFileList(parameters):
return requests.post(url="https://lanzous.com/filemoreajax.php",data=parameters,headers=header).content.decode('utf-8')

7. 最后整合一下代码

import requests
from bs4 import BeautifulSoup
import js2xml
from lxml import etree

header={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
}

def getHtml(url):
#获取网页源代码
return requests.get(url,headers = header).content.decode('utf-8')

def getSrcJsCode(html):
#获取包含参数的JS代码
soup = BeautifulSoup(html,'lxml')
scrLabel = soup.select('html script')
return soup.select('html script')[len(scrLabel)-2].string.replace(u'\u3000', ' ').replace(' ', ' ')#删掉非法字符

def getXmlCode(jsCode):
#将Js转换成XML
src_text = js2xml.parse(jsCode, encoding='utf-8', debug=False)
return js2xml.pretty_print(src_text)


def getParameters(src_tree,pwd):
#获取各项参数
parameters = {}
selector = etree.HTML(src_tree)

tName = selector.xpath('//var/@name')[3]
kName = selector.xpath('//var/@name')[4]
titleName = selector.xpath('//var/@name')[0]
parameters["title"] = selector.xpath('//var[@name="'+titleName+'"]/string')[0].text
parameters["fid"] = int(selector.xpath('//property[@name="fid"]/number/@value')[0])
parameters["lx"] = int(selector.xpath('//property[@name="lx"]/number/@value')[0])
parameters["uid"] = selector.xpath('//property[@name="uid"]/string')[0].text
parameters["rep"] = selector.xpath('//property[@name="rep"]/string')[0].text
parameters["up"] = int(selector.xpath('//property[@name="up"]/number/@value')[0])
parameters["ls"] = int(selector.xpath('//property[@name="ls"]/number/@value')[0])
parameters["t"] = selector.xpath('//var[@name="'+tName+'"]/string')[0].text
parameters["k"] = selector.xpath('//var[@name="'+kName+'"]/string')[0].text
return parameters

def getFileList(parameters):
#获取文件列表
return requests.post(url="https://lanzous.com/filemoreajax.php",data=parameters,headers=header).content.decode('utf-8')

def main(url,pwd):
#整合一下
html = getHtml(url)
jsCode = getSrcJsCode(html)
src_tree = getXmlCode(jsCode)
parameters = getParameters(src_tree,pwd)
parameters['pwd']=pwd
parameters['pg']=1
title = parameters['title']
return getFileList(parameters),title

if __name__ == '__main__':
url="https://lanzous.com/b015ybdmh"
pwd = "9n8z"
fileList,title = main(url,pwd)
print(fileList,title)

整合好啦,看不懂很正常,本来就不是教程呀,而且咱的代码写得也不规范。

六. 结束

以下就是本次实验用的链接获取的内容:

url="https://lanzous.com/b015ybdmh"
pwd = "9n8z"
#文件夹一号#
新建文本文档.zip
新建文本文档 (10).zip
新建文本文档 (9).zip
......

收录到盘他之后如下图所示(并没有收录):

352f482e690ff837539481ec01d2de8b.png

最后,大家手里有没有专门分享蓝奏云的网站呀,我需要来一个试一试。

有的话请在留言区留个言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言数字字体的格式,c语言—— 格式控制符—— 数据类型——相对应的字节数...

这是转义scanf("%lf", &r);枚举类型:https://www.cnblogs.com/bhlsheji/p/5204541.htmlANSI C标准基本类型的字长与范围基本类型 字长 范围char(字符型) 1字节 -128~127int(整型) 2字节 -32768~32767float(单精度浮点型) 4字节 约精确到6位数double(双…

电子设计大赛作品_第十四届电子设计大赛圆满结束!

为了激发学生的创造性,加强学生动手能力的培养和工程实践的训练,提高学生针对实际问题进行电子设计制作的综合能力,我院于2020年11月6号下午12点50分举行“安阳工学院第十四届电子设计大赛决赛”。1本次比赛由12组热爱电子设计的同学组成。由…

向左滚动,每次滚动的长度可以设置,然后暂停后继续滚动

支持FF等所有浏览器 向左滚动&#xff0c;每次滚动的长度可以设置&#xff0c;然后暂停后继续滚动 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <HTML>&l…

thinkserver rd650管理口地址_路由器WAN口和LAN口有什么区别【区别介绍】

现在一般家庭上网采用ADSL电话线上网的较多&#xff0c;而且家里一般都有好几台电脑&#xff0c;那么如何使几台电脑同时上网呢?这就要用到宽带路由器了&#xff0c;一般情况下宽带路由器上面有好几个网线插口&#xff0c;这些网线插口上有的标有WAN&#xff0c;有的网口标有L…

兰州交通大学C语言课程设计,兰州交通大学C语言课程设计报告(完整版).doc

您所在位置&#xff1a;网站首页 > 海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计兰州交通大学C语言课程设计报告(完整版).doc12页本文档一共被下载&#xff1a;次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整…

导出excel数字前面的0消失_EXCEL文本之王TEXT函数的4个运用

转自EXCEL不加班今天分享文本之王TEXT函数的4个运用&#xff0c;跟着卢子一起来操作。1.发票号都是8位&#xff0c;从系统导出后前面的0消失&#xff0c;如何补齐&#xff1f;常规格式发票号前面的0都会消失&#xff0c;只有文本格式情况下的0才不会消失。事先录入的话&#xf…

c 语言读取注册表信息,C++读取注册表的实现方法

C读取注册表GetRegValue.h:#ifndef __GETREGVALUE_H__#define __GETREGVALUE_H__#include //---------------------------------------------------------------//function:// GetRegValue 获取注册表中指定键的值//Access:// public//Parameter:// [in] int nKeyType - 注册表…

stm32按键矩阵代码_STM32 学习笔记---1

既然打算学&#xff0c;基础的东西元件的得知道是什么&#xff0c;这样写代码的时候才能知道自己在干什么&#xff01;ROM 和Flash 断电后都能储存数据&#xff0c;RAM则不能其实闪存&#xff08;flash&#xff09;是ROM的一种它的全名---FLASH EEPROM EEPROM---电可擦除可编程…

c语言 包络算法,包络检测C程序

最近做项目要提取一个声音信号的包络波形&#xff0c;所以花了点时间研究各种包络提取的算法。所谓包络检测又叫幅度解调&#xff0c;在许多领域都有重要的应用。如果载波信号是确定的&#xff0c;那么通常可以采用同步解调的方式&#xff0c;这种方式的信噪比最好&#xff0c;…

SQL Server 2005 DTS导入平面数据

SQL Server 2005 DTS导入平面数据源时&#xff0c;总是被截断&#xff0c;无法执行的错误解决方案 1 典型的错误信息如下&#xff1a; 消息 * 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断&#xff0c;或者一个或多个…

usb转ttl_[开源]双TYPEC转TTL串口模块

在工作中经常会用到USB转TTL串口调试工具。网上买的用的不顺手&#xff0c;所以做了一个。最终效果:渲染图实物图学习目的做一个USB转串口模块&#xff0c;使用学习渲染软件keyshot使用到的工具:立创EDA&#xff0c;keyshot等电烙铁&#xff0c;万用表等1.需要实现的功能4.根据…

cocos2dx 字体外发光_在电致发光研发领域,选择有机材料是基于哪些原因?

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

WebOS + WebIM

此已文重新编辑.WebOSWebOS 是基于web技术实现的类似于桌面操作系统交互风格的应用程序。实现WebOS的主要技术可以是JavaScript或者是RIA(Flex\SL)。在JS领域内的最强大和最著名的可能要数eyeos了。本文所述的WebOS也是采用JavaScript开发的。图1&#xff1a;此应用主要是用于大…

雨滴桌面rainmeter素材_win10 桌面如何做到清爽好看?这篇教程给你答案

当一个电脑用的时间长了以后&#xff0c;难免就会变得非常杂乱。伟大的领袖曾经说过&#xff0c;要像倒腾自己的发型一样折腾好自己的桌面。道理咱都懂&#xff0c;可是大家动起手来就傻眼了&#xff0c;这啥玩意啊&#xff0c;算了吧&#xff0c;还是不弄了。本着慈悲为怀&…

学习委托

简单实例 1 publicclasstest2 {3 publicdeledate voidMenuHandler(stringusername);4 publicvoidMenuHandlershixian(stringusername)5 {6 response.write(username);7 }8 publicvoidshow()9 {10 MenuHandler mhMenuHandlershixian;11 mh("majuan");12 }13 publicsta…

ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...

很多朋友问到关于ups相关的计算&#xff0c;其实关于ups方面的计算还是挺多&#xff0c;ups无论是接空开&#xff0c;还是连接电缆&#xff0c;以及选择电池&#xff0c;都可能需要计算它的电流或功率等&#xff0c;那么今天我们来详细了解下ups的相关计算。一、ups空开及电缆的…

多层感知机和神经网络的区别_学习笔记-从神经元到神经网络

人的大脑神经网络的复杂程度有人说&#xff0c;只有银河系可以比拟。总所周知&#xff0c;神经网络就是模仿大脑神经网络用数学知识构造的模型。单个神经元还是比较简单的。神经元一个神经元有树突&#xff0c;轴突&#xff0c;和细胞体等部分。树突接受输入信息&#xff0c;细…

华为鸿蒙os电视测评,高端技术下放毫不吝啬!华为智慧屏SE系列评测:鸿蒙OS让入门大屏也好用...

一、前言&#xff1a;高起点的华为智慧屏 终究走向更多大众用户智慧屏从概念落地为产品之后&#xff0c;一直都是华为旗下终端产品当中一个相当重要的角色&#xff0c;特别是在手机业务受阻的当下&#xff0c;更是成了全场景智慧化战略的核心支撑之一。凭借高品质的影音娱乐、花…

app调html页面,app界面管理(风格色调).html

&#xfeff;APP界面管理(风格色调)$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/re…

2021河南高考成绩查询郸城一高,郸城一高在河南有多牛 2021年高考成绩

课程介绍课程内容郸城一高在河南有多牛呢&#xff0c;2019年高考成绩怎么样呢&#xff0c;下面小编为大家总结一下&#xff0c;仅供大家参考。郸城一高多少学生考上清华北大在河南&#xff0c;有一所知名的高中&#xff0c;它的知名度仅次于衡水中学&#xff0c;它就是位于周口…