scihub下载太慢或者无法加载的问题

步骤一:进入scihub网址
在这里插入图片描述
步骤二:搜索想查找的文章
在这里插入图片描述
步骤三:搜索页面出来后(比如等待加载的页面,或者无法加载pdf的页面),复制链接到迅雷
在这里插入图片描述
在这里插入图片描述
步骤四:点击左边的save,等待下载即可
在这里插入图片描述
然后就会冒出来迅雷的下载链接啦
如果是下面的情形,应该是scihub里没有,或者名字打错了:
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python可以使用requests库和BeautifulSoup库来批量下载SciHub文献。首先需要获取文献的DOI号码,然后使用requests库向SciHub发送请求,获取文献的下载链接。最后使用requests库下载文献即可。 以下是一个简单的Python代码示例: ```python import requests from bs4 import BeautifulSoup # 设置SciHub的网址 base_url = 'https://sci-hub.se/' # 读取包含DOI号码的文件 with open('doi_list.txt', 'r') as f: doi_list = f.readlines() # 遍历DOI号码列表 for doi in doi_list: # 构造请求SciHub的URL url = base_url + doi.strip() # 发送请求 response = requests.get(url) # 解析HTML页面 soup = BeautifulSoup(response.text, 'html.parser') # 获取文献的下载链接 download_link = soup.find('iframe')['src'] # 下载文献 response = requests.get(download_link) # 保存文献到本地 with open(doi.strip() + '.pdf', 'wb') as f: f.write(response.content) ``` 需要注意的是,SciHub的网址可能会变化,需要根据实际情况进行修改。此外,需要安装requests库和BeautifulSoup库。 ### 回答2: Python是一个开源的高级编程语言,可以实现各种任务和应用程序。而Sci-Hub是一个自动化的网站,可以为研究人员提供大量的科学文献下载。如果需要进行批量下载Sci-Hub文献,可以使用Python来轻松实现。以下是实现步骤: 第一步:安装必要的库 Python中有一些库可以方便地下载并自动化访问网站。建议使用requests和bs4库。您可以使用以下命令在终端中安装它们: ``` pip install requests ``` ``` pip install bs4 ``` 第二步:编写Python脚本 使用Python编写脚本来下载Sci-Hub文献,主要是通过请求Sci-Hub网站并从响应中提取PDF文件的链接。 ``` import requests from bs4 import BeautifulSoup def download_article(doi): try: response = requests.get("https://sci-hub.se/" + doi, timeout=5) soup = BeautifulSoup(response.text, "html.parser") pdf_url = soup.find("iframe", {"id": "pdf"})["src"] pdf_response = requests.get(pdf_url, timeout=5) with open(doi + ".pdf", "wb") as f: f.write(pdf_response.content) print("Downloaded " + doi) except: print("Failed to download " + doi) dois = ["10.1016/j.commatsci.2020.110424", "10.1103/PhysRevB.103.184520", "10.1038/s41567-021-01187-2"] for doi in dois: download_article(doi) ``` 以上Python脚本可以批量下载三篇不同的文献。你只需要将筛选你想要下载的文献的DOI号,保存到一个列表中并进行迭代即可。 第三步:运行Python脚本 完成了以上两个步骤后,就可以运行脚本了。您可以在终端中使用以下命令来运行Python脚本: ``` python download_articles.py ``` 当运行脚本时,程序将尝试下载每个DOI列表中的文献。如果成功,它将在脚本所在目录中创建PDF文件。 需要注意的是,Sci-Hub网站一直在被封锁和被封禁。因此,如果您发现在运行脚本时遇到问题,请尝试更新Sci-Hub的URL或寻找其他来源。此外,下载的文献应该仅用于研究和教育目的。 ### 回答3: python是一种高级编程语言,因其灵活、易于学习和优秀的开源库而备受欢迎。在科研工作中,文献探索和下载是不可或缺的一环。scihub(科学技术文献镜像库)可以提供大量的科技文献下载,但手工下载文献费时费力。因此,使用python批量下载scihub文献将会极大提高效率。 下面是具体的python代码实现: 1. 安装依赖库 从pypi中安装必备的依赖库,用于发送http请求,解析html等操作 ```python !pip install requests beautifulsoup4 pandas ``` 2. 编写下载函数 接下来需要编写一个下载函数,该函数输入要下载的文献的DOI(数字对象标识符),并从scihub下载该文献。(DOI是一种类似于URL的唯一标识符,可以定位到文献在数据库中的位置) 将文献DOI传递给函数,该函数使用requests库向scihub发送请求,并在响应中提取PDF的链接。然后使用requests.get方法下载pdf文献,并使用open和write方法将文件写入本地磁盘。 ```python import requests import os from bs4 import BeautifulSoup from urllib.request import urlretrieve import time def download_pdf(doi, directory='./pdf/'): """ Requests a DOI and writes it to a directory. DOI: The DOI of the publication to download in string format (e.g. "10.1016/j.celrep.2020.01.063"). directory: The folder to save the downloaded PDFs to. Default folder is 'pdf/' on the current working directory. """ scihub_url = 'https://sci-hub.st/' # scihub的url # 尝试获取PDF的链接 url = ''.join([scihub_url, doi]) response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') pdf_url = soup.find_all('iframe', src=True)[0]['src'] # 下载PDF并写入磁盘 if pdf_url: response = requests.get(pdf_url, stream=True, verify=False) with open(f'{directory}{doi}.pdf', 'wb') as file: for chunk in response.iter_content(1024): file.write(chunk) print(f'{doi} downloaded.') ``` 3. 导入数据并批量下载 在本例中,我们将从CSV文件中读取DOI,并将那些DOI下载到本地磁盘。(CSV是一种电子表格格式,用于存储和管理数据)。 ```python import pandas as pd df = pd.read_csv('papers.csv') DOIs = df['DOI'].tolist() # 创建目录 if not os.path.exists('pdf'): os.makedirs('pdf') # 批量下载PDF for doi in DOIs: download_pdf(doi) time.sleep(5) # 限制下载速度,以免被封禁 ``` 在运行完上述代码后,相对应的DOI就在目录下被转换成pdf文件进行保存了。 批量下载scihub文献的代码过程之中,可以根据不同的需求进行实现,通过上述代码块的组合,可以实现许多有意义的任务。同时,这也是python编程在科研方面优秀的体现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值