Christopher Giovanny Ortiz Montero
PreguntaBuenas tardes, estoy haciendo scraping a una pagina que tiene su contenido distribuido en varias paginas. Quisiera saber ¿Cómo puedo indicarle a mi scraper que pase a la siguiente pagina y siga recolectando información?
Christopher Giovanny Ortiz Montero
este es el link de la pagina:
Juan Castro
¡Hola! Lamento no por darte una solución más exacta a tu problema. Nomas paso por si en el futuro cercano el curso de web scrapping te sea de utilidad: https://platzi.com/cursos/webscraping/. :muscle:
Sergio Rubiano
debes indexar la paginación del sitio, lo puedes aprender en https://platzi.com/cursos/webscraping/.
Sergio Bryan Madrid Nuñez
Lo que yo hago es jalar los atributos @href de los botones que me llevan a esa página, luego le indico que use ese link, este es uno de los scrapings que hice para farolear más que nada jaja:
import requests import lxml.html as html import os import time Main = 'https://www.expertoanimal.com/razas-de-perros.html?fbclid=IwAR3HwiVGl0jIvemICfkxcJccbFvePZFybo5EPemdswefCCm7Uwx1Ce0S44w' Pages = 'https://www.expertoanimal.com/razas-de-perros_' #indice.html Search = '//a[@class="titulo titulo--resultado"]/text()' contador = 2 List_of_dogs = [] def parse_pages(): global contador global List_of_dogs EachDog = True #Se repite hasta que la peticion a la página sea aceptada while EachDog: try: response_two = requests.get(f'{Pages}{contador}.html') print(f'{Pages}{contador}.html') if response_two.status_code==200: dog = response_two.content.decode('utf-8') parsed_two = html.fromstring(dog) EachDog = False try: List_of_dogs += parsed_two.xpath(Search) except: print('Mucho testo') else: raise ValueError(response_two.status_code) except ValueError as ve: print(f'Error: {ve}') def parse_page(): global List_of_dogs global contador pasa = True while pasa: try: response = requests.get(Main) if response.status_code==200: eachPage = response.content.decode('utf-8') parsed = html.fromstring(eachPage) try: List_of_dogs += parsed.xpath(Search) for x in range(0,5): parse_pages() contador += 1 pasa = False except: print('Error garrafal') else: raise ValueError(response.status_code) except ValueError as ve: print(f'Un error ha ocurrido: {ve}') def run(): parse_page() with open(f'Razas.txt', 'w', encoding='utf-8') as f: for x in List_of_dogs: f.write(x) f.write('\n') if __name__ == '__main__': run()``` Crea un txt con las razas de todos los perros que hay ahí y pasa a las páginas siguientes
