2021-03-10 Descarga de documentación por lotes de Python PDF

# - * - coding: utf-8 - * - 
"" " 
Creado el 10 de marzo 21:22:22 2021 
@author: kimol_love & solar2030 
>>>>>>>> Este código está diseñado en base al código de kimol_love en su blog , https://blog.csdn.net/kimol_justdo/article/details/112996678?spm=1001.2014.3001.5501 Dale las gracias. Aquí, se usó un comando 【por】 para que podamos descargar una serie de artículos por on- haga clic. Todo lo que tenemos que preparar es un archivo de texto que incluya las listas de títulos de los artículos. Y al mismo tiempo, resolví un error relacionado con "/" en los títulos de los artículos. Puede generar problemas porque "/" no se puede usar en los nombres de archivos. . Usando el comando 【str.replace】, podemos reemplazar '/' con '_', por ejemplo, el error se puede arreglar. 
>>>>>>>> 
""" 
Importación OS 
tiempo de importación 
solicitudes de importación
from bs4 import BeautifulSoup 
from tkinter.filedialog import askopenfilename 
import matplotlib.pyplot as plt 
import numpy as np 

path_and_name = askopenfilename (title = 'Paper list : title or doi', filetypes = [('TXT', '* .txt')] , 
                                initialldir = 'D: \\') 
data = [] 
with open (path_and_name) as txt_file: 
    line = txt_file.readlines () 
    para i, filas en enumerate (línea): 
        si i en rango (0, len (línea) ): 
            data.append (filas) 
print (data [0]) 



def search_article (artName): 
    '' '
    搜索 论文
    ---------------
    输入 : 论文 名
    ----- ----------
    输出 : 搜索 结果 (如果 没有 返回 "", De lo contrario, vuelva al enlace PDF) 
    '' ' 
    url =' https: 
    //www.sci-hub.ren/ ' headers = {' User-Agent ':' Mozilla / 5.0 (Windows NT 6.3; Win64; x64; rv: 84.0) Gecko / 20100101 Firefox / 84.0 ', 
               ' Aceptar ':' texto / html, aplicación / xhtml + xml, aplicación / xml; q = 0.9, imagen / webp, * / *; q = 0.8 ', 
               ' Accept-Language ':' zh-CN, zh; q = 0.8, zh-TW; q = 0.7, zh-HK; q = 0.5, en-US; q = 0.3, en ; q = 0.2 ', 
               ' Accept-Encoding ':' gzip, deflate, br ', 
               ' Content-Type ':' application / x-www-form-urlencoded ', 
               ' Content-Length ':' 123 ', 
               ' Origin ':' https://www.sci-hub.ren ',
               'Connection': 'keep-alive', 
               'Upgrade-Insecure-Requests': '1'}
    data = {'sci-hub-plugin-check': '', 
            'request': artName}  
    res = request.post (url,encabezados = encabezados, datos = datos) 
    html = res.text
    soup = BeautifulSoup (html, 'html.parser') 
    iframe = soup.find (id = 'pdf') 
    if iframe == None: # No se encontró el artículo correspondiente 
        return '' 
    else: 
        downUrl = iframe ['src'] 
        if'http 'not in downUrl: 
            downUrl =' https: '+ downUrl 
        return downUrl 


def download_article (downUrl): 
    ' '' 
    De acuerdo al enlace del artículo Descargue el artículo 
    ---------------------- 
    Introduzca: Enlace de tesis 
    ----------------- ----- 
    Salida: archivo PDF binario 
    '' ' 
    encabezados = {' Usuario-Agente ':'Mozilla / 5.0 (Windows NT 6.3; Win64; x64; rv: 84.0) Gecko / 20100101 Firefox / 84.0 ', 
               ' el Aceptar ':' texto / HTML, la Aplicación / xml XHTML +, la aplicación / xml; q = 0.9, image / webp, * / *; q = 0.8 ',
               _____ _____ _____ _ _ _ _ ____ 
              / ____ | / ____ | _ _ | | | | | | | | _ \
              \ ___ \ | | | | ______ | __ | | | | _ <


             | (___ | | | | ______ | | __ | | | | | | _) | 
              ____) | | ____ _ | | _ | | | | | __ | | | _) | 
             | _____ / \ _____ | _____ | | _ | | _ | \ ____ / | ____ / 


            '' ' 
    print (title) 


if __name__ ==' __main__ ': 
# while True: 
     I = [] 
     for ii in range (len (data)): 
        welcome () 
        #request = input ('请 输入 URL 、 PMID 、 DOI 或者 论文 标题 :') 
        request = data [ii] .strip () 
        title = request.replace ("/", "_") 
        str1 = str (ii) + '-' 
        título1 = str1 + title 
        print ('搜索 中 ...') 
        downUrl = search_article (solicitud) 
        if downUrl == '': 
            print ('No se encontraron artículos relacionados, por favor busque de nuevo!') 
            I.append ('0') 
        más: 
            print ('Enlace de tesis:% s'% downUrl) 
            print ('Descargando ...') 
            pdf = download_article (downUrl) #Directorio de 
            almacenamiento de documentos D: \ doc_E \ papers \ 
            with open ('D: \ doc_E \ papers \% s.pdf'% title1, 'wb') as f: 
                f.write (pdf) 
            print ('--- descarga completa ---') 
            I . append ('1') 


        time.sleep (0.8) 
     print ('Descargar estadísticas completas:% s', I)

Supongo que te gusta

Origin blog.csdn.net/you_us/article/details/114646697
Recomendado
Clasificación