
Francisco Javier Márquez López
PreguntaEstoy haciendo el scrapping en la página de Infobae y en la página principal los artículos tienen links relativos. He intentado varias cosas para agregarles el link absoluto (home + link artículo) pero no logro hacerlo porque. ¿Alguien sabe como?

Francisco Javier Márquez López
Muchas gracias por su aporte. La verdad es que hace unos días logré resolver el problema utilizando la librería urllib y el método urljoin. Solo tuve que iterar dentro de la lista de url's relativos(XPATH_CATEGORIAS) y agregarle el Home (HOME_URL). Aquí les dejó el código para vean.
def parse_home(): cats = [] try: response = requests.get(HOME_URL) if response.status_code == 200: home = response.content.decode('utf-8') parsed = html.fromstring(home) categorias = parsed.xpath(XPATH_CATEGORIAS) for i in categorias: sub = i.split(', ') sub = urljoin(HOME_URL, sub[0], allow_fragments=True) cats.append(sub) return cats except ValueError as ve: print(ve) print(parse_home())

Alan Kevin Fuentes García
No te preocupes, puedes dejar el código como lo tiene el profe. En la siguiente clase crea una función que se llama
parse_notice
HOME_URL = "https://www.infobae.com/" XPATH_LINK_TO_ARTICLE = '(//div[@class="hidden_desktop"]/h2/a[@class="black_text"])[position() mod 2 = 0]/@href' XPATH_TITLE = '//h1[contains(@class, "article-headline")]/text()' XPATH_SUMMARY = '//h2[contains(@class, "article-subheadline")]/text()' def parse_notice(link, date): try: response = requests.get(f"{HOME_URL}{link}") # Uní el home con el enlace relativo, sin diagonal porque el link ya trae. if response.status_code == 200: notice = response.content.decode("utf-8") parsed = html.fromstring(notice) ... ... ...
De forma que concatenes el
HOME_URL
link

Orlando Guillermo Quintero Calderón
Me pasa lo mismo, pero no entiendo muy bien lo que dicen en StackOverflow. No sé dónde agregar lo que dicen ni qué quitar y ya dañe el código varias veces

Alan Kevin Fuentes García
Hola, igual intenté formar expresiones que pudieran darme ese resultado. No logré nada jaja. Un workaround puede ser obtener las rutas relativas como las obtiene de XPath y en Python agregarles el prefijo del home. En StackOverflow lo hacen de esta forma.