Intento rastrear los sitios web de los restaurantes en www.tripadivisor.de

Por ejemplo, tomé este: Restaurante y en el sitio hay una referencia al mi URL quiero raspar: http://leniliebtkaffee.de

El código fuente se ve así:

    <a data-encoded-url="VUxRX2h0dHA6Ly9sZW5pbGllYnRrYWZmZWUuZGUvX3FLOQ==" class="_2wKz--mA _27M8V6YV" 
    target="_blank" href="http://leniliebtkaffee.de/"><span class="ui_icon laptop _3ZW3afUk"></span><span 
    cass="_2saB_OSe">Website/span><span class="ui_icon external-link-no-box _2OpUzCuO"></span></a>

Sin embargo, si trato de eliminar esto con el siguiente código de Python:

import requests
from bs4 import BeautifulSoup
URL = 'https://www.tripadvisor.de/Restaurant_Review-g187367-d12632224-Reviews-Leni_Liebt_Kaffee-Aachen_North_Rhine_Westphalia.html'  
    page = requests.get(URL)
    soup = BeautifulSoup(page.content, 'html.parser')
    for website in soup.findAll('a', attrs={'class':'_2wKz--mA _27M8V6YV'}):
        print(website)

Entiendo

<a class="_2wKz--mA _27M8V6YV" data-encoded-url="NVh0X2h0dHA6Ly9sZW5pbGllYnRrYWZmZWUuZGUvX1dDWg==" target="_blank"><span class="ui_icon laptop _3ZW3afUk"></span><span class="_2saB_OSe">Website</span><span class="ui_icon external-link-no-box _2OpUzCuO"></span></a>

Desafortunadamente, no hay un enlace href allí. ¿Cómo puedo obtenerlo?

1
user47091 24 jul. 2020 a las 12:18

1 respuesta

La mejor respuesta

Hay una URL codificada en base64 en data-encoded-url:

>>> import base64
>>> base64.b64decode(b"NVh0X2h0dHA6Ly9sZW5pbGllYnRrYWZmZWUuZGUvX1dDWg==")
b'5Xt_http://leniliebtkaffee.de/_WCZ'

Como puede ver, la URL parece estar llena de tonterías o algún tipo de banderas, por lo que querrá eliminar eso.

2
L3viathan 24 jul. 2020 a las 09:32