日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2023/11/30 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python string转int_我用Python搞资源 [ 02 ] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這不是教程,所以沒有基礎的你看不懂也很正常,去后面點個贊就好。

一. 目標鏈接

上一個推送處理了一個不帶密碼的藍奏云分享鏈接,這回處理一下帶密碼的分享鏈接。

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

為了能有一個合適的鏈接來練手,咱還特地注冊了一下藍奏云。注冊了才發現,藍奏云竟然只有文件夾分享才有密碼,單個文件是沒有密碼的……而且是上傳即生成外鏈,和百度網盤還是有很大差別的。

二. 頁面解析

瀏覽器打開上述鏈接后就是輸入密碼的界面了。很明顯,咱們要的東西需要輸入密碼才能看到。
在瀏覽器上查看一下網頁源代碼:

可以看到一個密碼提交靠的是一個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
},

這邊有一個需要注意的點,t、k這兩個參數對應的變量是會變化的,截圖中t、k兩個參數對照iaxwyd和igw906這兩個變量,過段時間刷新一下這兩個變量名又會發生改變。

三. 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
......

收錄到盤他之后如下圖所示(并沒有收錄):

最后,大家手里有沒有專門分享藍奏云的網站呀,我需要來一個試一試。

有的話請在留言區留個言。

總結

以上是生活随笔為你收集整理的python string转int_我用Python搞资源 [ 02 ]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。