1
Dudas y pedidos generales / 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
y buscaba todo lo que tuviera /page pero yo solo queria lo que fuera asi http://quotes.toscrape.com/page/2/
y no http://quotes.toscrape.com/tag/love/page/1/ 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 http://quotes.toscrape.com/page/2/ 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
gracias a todos por su ayuda
Código: Python
- Rule(LinkExtractor(allow=r'page/'),callback = 'parse', follow=True ),
y buscaba todo lo que tuviera /page pero yo solo queria lo que fuera asi http://quotes.toscrape.com/page/2/
y no http://quotes.toscrape.com/tag/love/page/1/ 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 http://quotes.toscrape.com/page/2/ 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
- import scrapy
- from scrapy.spiders import CrawlSpider, Rule
- from scrapy.linkextractors import LinkExtractor
- class WitsiSpider(CrawlSpider):
- name = 'witsi'
- allowed_domains = ['quotes.toscrape.com']
- start_urls = ['[url]http://quotes.toscrape.com/page/1/[/url]']
- base_url = '[url]http://quotes.toscrape.com/page/1/[/url]'
- rules = (
- Rule(LinkExtractor(allow=r'.com/page/'),callback = 'parse', follow=True ),
- )
- def parse(self, response):
- citas = response.xpath('//*[@class="quote"]')
- for cita in citas:
- texto = cita.xpath('.//span[@class="text"]/text()').extract_first()
- autor = cita.xpath('.//*[@class="author"]/text()').extract_first()
- palabras_claves = cita.xpath('.//*[@itemprop="keywords"]/@content').extract_first()
- yield{ 'Texto' : texto,
- 'Autor' : autor,
- 'Palabras Claves' : palabras_claves }
gracias a todos por su ayuda