En este artículo, usaremos Scrapy para analizar cualquier PDF en línea sin descargarlo en el sistema. Para hacer eso, tenemos que usar el analizador de PDF o la biblioteca de edición de Python conocida como PyPDF2 .
PyPDF2 es una biblioteca de análisis de pdf de python, que proporciona varios métodos, como métodos de lectura, métodos de escritura y muchos más, que se utilizan para modificar, editar y analizar los pdf, ya sea en línea o fuera de línea.
Todos los constructores de clases de PyPDF2 requieren una transmisión del archivo PDF. Ahora, dado que solo podemos obtener la URL del archivo pdf, para convertir esa URL en un flujo de archivo o simplemente abrir esa URL, necesitaremos el uso del módulo urllib de Python, que se puede usar para llamar a un método urlopen() en el objeto de solicitud devuelto por spider.
Ejemplo 1: usaremos algunas operaciones básicas como extraer los números de página y verificar si el archivo está encriptado o no. Para esto, analizaremos con la URL y encontraremos la respuesta, luego verificaremos las páginas del archivo y las cifraremos usando numPages e isEncrypted.
Scrapy spider rastrea la página web para encontrar el archivo pdf en línea que se va a desechar, luego la URL de ese archivo pdf se obtiene de otra URL variable, luego la urllib se usa para abrir el archivo URL y crear un objeto lector de PyPDF2 lib pasando el enlace de flujo de la URL al parámetro del constructor del Objeto.
Python3
import io import PyPDF2 import urllib.request import scrapy from scrapy.item import Item class ParserspiderSpider(scrapy.Spider): name = 'parserspider' # URL of the pdf file . This is operating system # book solution of author Albert Silberschatz start_urls = ['https://codex.cs.yale.edu/avi/\ os-book/OS9/practice-exer-dir/index.html'] # default parse method def parse(self, response): # getting the list of URL of the pdf pdfs = response.xpath('//tr[3]/td[2]/a/@href') # Extracting the URL URL = response.urljoin(pdfs[0].extract()) # calling urllib to create a reader of the pdf url File = urllib.request.urlopen(URL) reader = PyPDF2.pdf.PdfFileReader(io.BytesIO(File.read())) # accessing some descriptions of the pdf file. print("This is the number of pages"+str(reader.numPages)) print("Is file Encrypted?"+str(reader.isEncrypted))
Producción:
Ejemplo 2: en este ejemplo, extraeremos los datos del archivo pdf (análisis), luego se utilizará el objeto PyPDF2 para realizar los cambios necesarios en el archivo pdf a través de los diversos métodos mencionados anteriormente. Imprimiremos los datos extraídos al terminal.
Python3
import io import PyPDF2 import urllib.request import scrapy from scrapy.item import Item class ParserspiderSpider(scrapy.Spider): name = 'parserspider' # URL of the pdf file. start_urls = ['https://codex.cs.yale.edu/avi\ /os-book/OS9/practice-exer-dir/index.html'] # default parse method def parse(self, response): # getting the list of URL of the pdf pdfs = response.xpath('//tr[3]/td[2]/a/@href') # Extracting the URL URL = response.urljoin(pdfs[0].extract()) # calling urllib to create a reader of the pdf url File = urllib.request.urlopen(URL) reader = PyPDF2.pdf.PdfFileReader(io.BytesIO(File.read())) # creating data data="" for datas in reader.pages: data += datas.extractText() print(data)
Producción:
Publicación traducida automáticamente
Artículo escrito por harshkumarchoudhary144 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA