# - * - 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)
2021-03-10 Descarga de documentación por lotes de Python PDF
Supongo que te gusta
Origin blog.csdn.net/you_us/article/details/114646697
Recomendado
Clasificación