como es para seguir el enlace usando Scapy y Python

  • 1 Respuestas
  • 234 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rommel360

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    6.67%
  • Reputación 1
    • Ver Perfil

como es para seguir el enlace usando Scapy y Python

  • en: Septiembre 03, 2020, 06:13:27 pm
Código: Python
  1. import scrapy
  2.  
  3. class WitsiSpider(scrapy.Spider):
  4.     name = 'witsi'
  5.     allowed_domains = ['www.quotes.toscrape.com']
  6.     start_urls = ['http://quotes.toscrape.com']
  7.  
  8.     def parse(self, response):
  9.         citas = response.xpath('//*[@class="quote"]')
  10.         for cita in citas:
  11.            texto = cita.xpath('.//*[@class="text"]/text()').extract_first()
  12.            autor = cita.xpath('.//*[@class="author"]/text()').extract_first()
  13.            palabras_claves = cita.xpath('.//*[@itemprop="keywords"]/@content').extract_first()
  14.            
  15.            yield{ 'Texto' : texto,
  16.                  'Autor' : autor,
  17.                  'Palabras Claves' : palabras_claves }
  18.            
  19.         url_a_continuar = response.xpath('//ul[@class="pager"]/li[@class="next"]/a/@href').extract()
  20.         url_siguiente = response.urljoin(url_a_continuar)
  21.         yield scrapy.Request(url_siguiente, callback = self.parse)
  22.  

estoy aprendiendo un poco de esto y el problema que tengo es que no puedo hacer que mi arañita siga el enlace y lo unico que hace es repetirme los datos.
Como seria para que la araña siga el enlace y pueda continuar sacando la informacion?

estoy practicando con la siguiente pagina de internet

You are not allowed to view links. Register or Login

Bueno e editado mi araña despues de investigar y ya consegui seguir los link pero el problema es que me repite la informacion. que estare haciendo mal?

Nueva Version
Código: Python
  1. import scrapy
  2.  
  3. from scrapy.spiders import CrawlSpider, Rule
  4. from scrapy.linkextractors import LinkExtractor
  5.  
  6. class WitsiSpider(CrawlSpider):
  7.     name = 'witsi'
  8.     allowed_domains = ['quotes.toscrape.com']
  9.     start_urls = ['http://quotes.toscrape.com']
  10.  
  11.     rules = (
  12.         Rule(LinkExtractor(allow=r'page/'),callback = 'parse', follow=True ),
  13.     )
  14.        
  15.     def parse(self, response):
  16.         citas = response.xpath('//*[@class="quote"]')
  17.         for cita in citas:
  18.             texto = cita.xpath('.//*[@class="text"]/text()').extract_first()
  19.             autor = cita.xpath('.//*[@class="author"]/text()').extract_first()
  20.             palabras_claves = cita.xpath('.//*[@itemprop="keywords"]/@content').extract_first()
  21.            
  22.             yield{ 'Texto' : texto,
  23.                    'Autor' : autor,
  24.               'Palabras Claves' : palabras_claves }
  25.            
  26.        
  27.             yield
  28.  

Esto es una parte de la salida de mi araña y como ven en este caso son citas de poemas me los repite y a si con otros
Código: Text
  1. {"Texto": "\u201cA woman is like a tea bag; you never know how strong it is until it's in hot water.\u201d", "Autor": "Eleanor Roosevelt", "Palabras Claves": "misattributed-eleanor-roosevelt"},
  2. {"Texto": "\u201cA day without sunshine is like, you know, night.\u201d", "Autor": "Steve Martin", "Palabras Claves": "humor,obvious,simile"},
  3. {"Texto": "\u201cLife is what happens to us while we are making other plans.\u201d", "Autor": "Allen Saunders", "Palabras Claves": "fate,life,misattributed-john-lennon,planning,plans"},
  4. {"Texto": "\u201cLife is what happens to us while we are making other plans.\u201d", "Autor": "Allen Saunders", "Palabras Claves": "fate,life,misattributed-john-lennon,planning,plans"},
  5. {"Texto": "\u201cLife is what happens to us while we are making other plans.\u201d", "Autor": "Allen Saunders", "Palabras Claves": "fate,life,misattributed-john-lennon,planning,plans"},
  6. {"Texto": "\u201c... a mind needs books as a sword needs a whetstone, if it is to keep its edge.\u201d", "Autor": "George R.R. Martin", "Palabras Claves": "books,mind"},
  7. {"Texto": "\u201cYou have to write the book that wants to be written. And if the book will be too difficult for grown-ups, then you write it for children.\u201d", "Autor": "Madeleine L'Engle", "Palabras Claves": "books,children,difficult,grown-ups,write,writers,writing"},
  8. {"Texto": "\u201cYou have to write the book that wants to be written. And if the book will be too difficult for grown-ups, then you write it for children.\u201d", "Autor": "Madeleine L'Engle", "Palabras Claves": "books,children,difficult,grown-ups,write,writers,writing"},
  9. {"Texto": "\u201cYou have to write the book that wants to be written. And if the book will be too difficult for grown-ups, then you write it for children.\u201d", "Autor": "Madeleine L'Engle", "Palabras Claves": "books,children,difficult,grown-ups,write,writers,writing"},
  10. {"Texto": "\u201cYou have to write the book that wants to be written. And i
  11.  


« Última modificación: Septiembre 10, 2020, 02:46:32 pm por rommel360 »

Desconectado rommel360

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    6.67%
  • Reputación 1
    • Ver Perfil

Re:como es para seguir el enlace usando Scapy y Python

  • en: Septiembre 10, 2020, 02:44:51 pm
bueno pues ya lo resolvi. el problema fue que tenia mal mi regla ya que mi regla era global

Código: Python
  1.  Rule(LinkExtractor(allow=r'page/'),callback = 'parse', follow=True ),

y buscaba todo lo que tuviera /page pero yo solo queria lo que fuera asi You are not allowed to view links. Register or Login

y no You are not allowed to view links. Register or Login ya que esta forma es dominio + subcarpeta + page/ y no me servia ya que lo correcto para mi ejemplo es dominio/+page/1,2,3,4,5,6,7,8,9,10 (cada una de esa es un page/2 page/3 page/4 etc)

a si que lo que hice fue cambiar mi regla (allow=r'page/') por .com/page/ y asi, si se trai esto solamente You are not allowed to view links. Register or Login porque se cumple .com + page/1,2,3,4 etc. y esta ya no se cumple .com/subcarpeta/subcarpeta/page/1

a si que al final quedo

Código: Python
  1. import scrapy
  2.  
  3. from scrapy.spiders import CrawlSpider, Rule
  4. from scrapy.linkextractors import LinkExtractor
  5.  
  6. class WitsiSpider(CrawlSpider):
  7.     name = 'witsi'
  8.     allowed_domains = ['quotes.toscrape.com']
  9.     start_urls = ['http://quotes.toscrape.com/page/1/']
  10.     base_url = 'http://quotes.toscrape.com/page/1/'
  11.      
  12.     rules = (
  13.         Rule(LinkExtractor(allow=r'.com/page/'),callback = 'parse', follow=True ),
  14.     )
  15.        
  16.     def parse(self, response):
  17.         citas = response.xpath('//*[@class="quote"]')
  18.         for cita in citas:
  19.             texto = cita.xpath('.//span[@class="text"]/text()').extract_first()
  20.             autor = cita.xpath('.//*[@class="author"]/text()').extract_first()
  21.             palabras_claves = cita.xpath('.//*[@itemprop="keywords"]/@content').extract_first()
  22.            
  23.             yield{ 'Texto' : texto,
  24.                    'Autor' : autor,
  25.               'Palabras Claves' : palabras_claves }
  26.  

gracias a todos por su ayuda

 

Crear un archivo .vbs para ejecutar un archivo .bat en invisible

Iniciado por NMS

Respuestas: 2
Vistas: 12382
Último mensaje Marzo 13, 2017, 10:37:57 pm
por sadfud
[SOLUCIONADO] Desencriptacion de una imagen para extraer la imagen original

Iniciado por stuxnet13

Respuestas: 3
Vistas: 3953
Último mensaje Enero 07, 2016, 07:55:01 pm
por blackdrake
[SOLUCIONADO] Ayuda para encontrar "airdecrypt"

Iniciado por Typh0n

Respuestas: 2
Vistas: 6379
Último mensaje Enero 13, 2014, 07:11:18 am
por aika
allegro 5,opngl,sdk para fan game modo storyboard game

Iniciado por Mr.Tru

Respuestas: 2
Vistas: 3384
Último mensaje Mayo 23, 2018, 01:19:20 pm
por Mr.Tru
[SOLUCIONADO] Script para introducir datos de un formulario en una base de datos

Iniciado por Kaynan

Respuestas: 2
Vistas: 2256
Último mensaje Julio 07, 2014, 07:28:46 am
por blackdrake