文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何用Python抓取阿里云盘资源

2023-06-29 06:41

关注

这篇文章主要介绍“如何用Python抓取阿里云盘资源”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用Python抓取阿里云盘资源”文章能帮助大家解决问题。

网页分析

这个网站有两个搜索路线:搜索线路一和搜索线路二,本文章使用的是搜索线路二。

如何用Python抓取阿里云盘资源

打开控制面板下的网络,一眼就看到一个 seach.html 的 get 请求。

如何用Python抓取阿里云盘资源

上面带了好几个参数,四个关键参数:

也是在控制面板中,看出这个网页跳转到阿里云盘获取真实的的链接是在标题上面的。用 bs4 解析页面上的 div(class=resource-item border-dashed-eee) 标签下的 a 标签就能得到跳转网盘的地址,解析 div 下的 p 标签获取资源日期。

如何用Python抓取阿里云盘资源

抓取与解析

首先安装需要的 bs4 第三方库用于解析页面。

pip3 install bs4

下面是抓取解析网页的脚本代码,最后按日期降序排序。

import requestsfrom bs4 import BeautifulSoupimport stringword = 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)

示例结果:

如何用Python抓取阿里云盘资源

模板

上面抓取完内容后,还需要将内容一个个复制到 google 浏览器中访问,有点太麻烦了。要是直接点击一下能访问就好了。小编在这里就用 Python 的模板方式写一个 html 文件。

模板文件小编是用 elements-ui 做的,下面是关键的代码:

<body>    <div id="app">        <el-table :data="table"  :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)

示例结果:

如何用Python抓取阿里云盘资源

跳转到阿里云盘界面

如何用Python抓取阿里云盘资源

完整代码

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"  :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 requestsfrom bs4 import BeautifulSoupimport stringword = 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抓取阿里云盘资源”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯