<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前陣子阿里雲盤大火,送了好多的容量空間。而且阿里雲盤下載是不限速,這點比百度網路硬碟好太多了。這兩天看到一個第三方網站可以搜尋阿里雲盤上的資源,但是它的資源順序不是按時間排序的。這種情況會造成排在前面時間久遠的資源是一個已經失效的資源。小編這裡用 python 抓取後重新排序。
這個網站有兩個搜尋路線:搜尋線路一和搜尋線路二,本文章使用的是搜尋線路二。
開啟控制面板下的網路,一眼就看到一個 seach.html 的 get 請求。
上面帶了好幾個引數,四個關鍵引數:
也是在控制面板中,看出這個網頁跳轉到阿里雲盤獲取真實的的連結是在標題上面的。用 bs4 解析頁面上的 div(class=resource-item border-dashed-eee) 標籤下的 a 標籤就能得到跳轉網路硬碟的地址,解析 div 下的 p 標籤獲取資源日期。
首先安裝需要的 bs4 第三方庫用於解析頁面。
pip3 install bs4
下面是抓取解析網頁的指令碼程式碼,最後按日期降序排序。
import requests from bs4 import BeautifulSoup import string word = input('請輸入要搜尋的資源名稱:') headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36' } result_list = [] for i in range(1, 11): print('正在搜尋第 {} 頁'.format(i)) params = { 'page': i, 'keyword': word, 'search_folder_or_file': 0, 'is_search_folder_content': 0, 'is_search_path_title': 0, 'category': 'all', 'file_extension': 'all', 'search_model': 0 } response_html = requests.get('https://www.alipanso.com/search.html', headers = headers,params=params) response_data = response_html.content.decode() soup = BeautifulSoup(response_data, "html.parser"); divs = soup.find_all('div', class_='resource-item border-dashed-eee') if len(divs) <= 0: break for div in divs[1:]: p = div.find('p',class_='em') if p == None: break download_url = 'https://www.alipanso.com/' + div.a['href'] date = p.text.strip(); name = div.a.text.strip(); result_list.append({'date':date, 'name':name, 'url':download_url}) if len(result_list) == 0: break result_list.sort(key=lambda k: k.get('date'),reverse=True)
範例結果:
上面抓取完內容後,還需要將內容一個個複製到 google 瀏覽器中存取,有點太麻煩了。要是直接點選一下能存取就好了。小編在這裡就用 Python 的模板方式寫一個 html 檔案。
模板檔案小編是用 elements-ui 做的,下面是關鍵的程式碼:
<body> <div id="app"> <el-table :data="table" style="width: 100%" :row-class-name="tableRowClassName"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="名稱" width="600"> </el-table-column> <el-table-column label="連結"> <template slot-scope="scope"> <a :href="'http://'+scope.row.url" rel="external nofollow" target="_blank" class="buttonText">{{scope.row.url}}</a> </template> </el-table> </div> <script> const App = { data() { return { table: ${elements} }; } }; const app = Vue.createApp(App); app.use(ElementPlus); app.mount("#app"); </script> </body>
在 python 中讀取這個模板檔案,並將 ${elements} 關鍵詞替換為上面的解析結果。最後生成一個 report.html 檔案。
with open("aliso.html", encoding='utf-8') as t: template = string.Template(t.read()) final_output = template.substitute(elements=result_list) with open("report.html", "w", encoding='utf-8') as output: output.write(final_output)
範例結果:
跳轉到阿里雲盤介面
aliso.html
<html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <script src="https://unpkg.com/vue@next"></script> <!-- import CSS --> <link rel="stylesheet" href="https://unpkg.com/element-plus/dist/index.css"> <!-- import JavaScript --> <script src="https://unpkg.com/element-plus"></script> <title>阿里雲盤資源</title> </head> <body> <div id="app"> <el-table :data="table" style="width: 100%" :row-class-name="tableRowClassName"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="名稱" width="600"> </el-table-column> <el-table-column label="連結"> <template v-slot="scope"> <a :href="scope.row.url" target="_blank" class="buttonText">{{scope.row.url}}</a> </template> </el-table> </div> <script> const App = { data() { return { table: ${elements} }; } }; const app = Vue.createApp(App); app.use(ElementPlus); app.mount("#app"); </script> </body> </html>
aliso.py
# -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup import string word = input('請輸入要搜尋的資源名稱:') headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36' } result_list = [] for i in range(1, 11): print('正在搜尋第 {} 頁'.format(i)) params = { 'page': i, 'keyword': word, 'search_folder_or_file': 0, 'is_search_folder_content': 0, 'is_search_path_title': 0, 'category': 'all', 'file_extension': 'all', 'search_model': 2 } response_html = requests.get('https://www.alipanso.com/search.html', headers = headers,params=params) response_data = response_html.content.decode() soup = BeautifulSoup(response_data, "html.parser"); divs = soup.find_all('div', class_='resource-item border-dashed-eee') if len(divs) <= 0: break for div in divs[1:]: p = div.find('p',class_='em') if p == None: break download_url = 'https://www.alipanso.com/' + div.a['href'] date = p.text.strip(); name = div.a.text.strip(); result_list.append({'date':date, 'name':name, 'url':download_url}) if len(result_list) == 0: break result_list.sort(key=lambda k: k.get('date'),reverse=True) print(result_list) with open("aliso.html", encoding='utf-8') as t: template = string.Template(t.read()) final_output = template.substitute(elements=result_list) with open("report.html", "w", encoding='utf-8') as output: output.write(final_output)
用 python 做一些小爬蟲,不僅去掉網站上煩人的廣告,也更加的便利了。
以上就是利用Python抓取阿里雲盤資源的詳細內容,更多關於Python抓取雲盤資源的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45