¿Cómo usar Scrapy para analizar páginas PDF en línea?

Scrapy , PyPDF2 , URLLIB

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:

Primero imprima las páginas de pdf y si está encriptado o no

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:

Pdf analizado

Publicación traducida automáticamente

Artículo escrito por harshkumarchoudhary144 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *