鱼C论坛

 找回密码
 立即注册
查看: 3044|回复: 12

[已解决]爬虫挑战

[复制链接]
发表于 2023-11-27 22:45:35 | 显示全部楼层
可以使用Python的requests库来发送POST请求获取文件目录信息,并对返回的数据进行解析。以下是一个示例代码:
  1. import requests
  2. def get_file_list(url, path):
  3.     data = {
  4.         "path": path,
  5.         "password": "",
  6.         "page": 1,
  7.         "per_page": 30,
  8.         "refresh": False
  9.     }
  10.    
  11.     response = requests.post(url, json=data)
  12.     if response.status_code == 200:
  13.         files = response.json().get("files")
  14.         if isinstance(files, list):
  15.             return files
  16.     return []
  17. def generate_download_url(base_url, file_path):
  18.     # 将文件路径中的特殊字符编码转换为URL编码
  19.     encoded_path = "/".join([requests.utils.quote(part) for part in file_path.split("/")])
  20.     return f"{base_url}/{encoded_path}"
  21. url = "http://www.038909.xyz:5678/api/fs/list"
  22. base_url = "http://www.038909.xyz:5678"
  23. file_list = get_file_list(url, "/")
  24. for file_info in file_list:
  25.     file_path = file_info.get("path")
  26.     download_url = generate_download_url(base_url, file_path)
  27.     print(download_url)
复制代码

这段代码先定义了一个`get_file_list`函数,用于发送POST请求获取文件目录信息。然后定义了一个`generate_download_url`函数,用于根据文件路径生成可下载的文件URL。最后在主程序部分,通过调用`get_file_list`函数获取文件列表,并循环遍历输出每个文件的下载URL。

请注意,这段代码仅提供了实现思路和示例代码,具体情况可能需要根据网站的实际接口和返回数据格式进行调整。同时,爬取网站资源可能涉及到合法性和道德性问题,请务必遵守相关法律法规和网站的使用规定。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-27 22:47:36 | 显示全部楼层
fineconey 发表于 2023-11-27 22:47
乱码了,路径如下。

如果路径中包含了URL编码的特殊字符,可以使用Python的urllib库来进行URL解码。以下是更新过后的代码示例:import requestsfrom urllib.parse import unquotedef get_file_list(url, path):    data = {        "path": path,        "password": "",        "page": 1,        "per_page": 30,        "refresh": False    }    response = requests.post(url, json=data)    if response.status_code == 200:        files = response.json().get("files")        if isinstance(files, list):            return files    return []def generate_download_url(base_url, file_path):    # 解码URL编码的文件路径    decoded_path = unquote(file_path)    return f"{base_url}/{decoded_path}"url = "http://www.038909.xyz:5678/api/fs/list"base_url = "http://www.038909.xyz:5678"direc_path = "/%E6%B8%B8%E6%88%8F/PC/03.%E7%A7%8D%E5%AD%90%E6%96%87%E4%BB%B6%E9%9B%86%E5%90%88/%E7%A7%8D%E5%AD%90%E6%96%87%E4%BB%B6/2012%E5%B9%B46%E6%9C%88~11%E6%9C%88/%E5%90%88%E9%9B%86.exepsfile_list = get_file_list(url, direc_path)for file_info in file_list:    file_path = file_info.get("path")    download_url = generate_download_url(base_url, file_path)    print(download_url)这段代码在之前的基础上,增加了一个`unquote`函数的调用来解码URL编码的文件路径。由于你提供的示例路径是已经进行了URL编码的,所以需要将路径进行解码才能得到正确的下载URL。请注意,这代码仅提供了解决乱码问题的思路和示例代码,请根据实际情况进行调整。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-3 08:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表