用python下载一个arxiv页面上所有pdf文件

要使用Python下载一个arXiv页面上所有的PDF文件,你可以使用requests库来获取网页内容,并结合BeautifulSoup库来解析HTML,然后找到所有PDF链接并下载它们。以下是一个简单的示例代码,展示了如何实现这一功能。

首先,你需要确保安装了所需的库。你可以通过以下命令安装:

pip install requests beautifulsoup4

接下来,你可以使用下面的代码来下载arXiv页面上的所有PDF文件:

import os
import requests
from bs4 import BeautifulSoup

def download_arxiv_pdfs(arxiv_url, download_folder):
    # 创建下载文件夹(如果不存在)
    if not os.path.exists(download_folder):
        os.makedirs(download_folder)

    # 获取arXiv页面内容
    response = requests.get(arxiv_url)
    
    # 检查请求是否成功
    if response.status_code != 200:
        print(f"无法访问页面: {response.status_code}")
        return
    
    # 解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')

    # 找到所有PDF链接
    pdf_links = []
    for link in soup.find_all('a'):
        href = link.get('href')
        if href and 'pdf' in href:
            pdf_links.append(href)

    # 下载每个PDF文件
    for pdf_link in pdf_links:
        full_pdf_link = f"https://arxiv.org{pdf_link}"
        pdf_name = os.path.join(download_folder, pdf_link.split('/')[-1])
        
        print(f"正在下载: {pdf_name}")
        pdf_response = requests.get(full_pdf_link)
        
        if pdf_response.status_code == 200:
            with open(pdf_name, 'wb') as f:
                f.write(pdf_response.content)
            print(f"已保存: {pdf_name}")
        else:
            print(f"无法下载PDF: {full_pdf_link} - 状态码: {pdf_response.status_code}")

if __name__ == "__main__":
    arxiv_url = "https://arxiv.org/list/cs/0503"  # 输入目标arXiv页面的URL
    download_folder = "./arxiv_pdfs"  # 指定保存PDF的文件夹
    
    download_arxiv_pdfs(arxiv_url, download_folder)

使用说明:

  1. arxiv_url 更改为你希望下载PDF文件的具体arXiv页面URL。
  2. 运行该脚本,它将创建一个指定的文件夹(如果不存在),并在其中保存所有找到的PDF文件。

请注意,这段代码仅用于学习和个人目的,确保遵守网站的使用条款和条件以及相关法律法规。

Published At