Próbuję zeskrobać strony internetowe Restauracja na www.tripadivisor.de

Na przykład wziąłem ten: Restauracja i na stronie Istnieje odniesienie do Mój adres URL Chcę zeskrobać: http://leniliebfefee.de

Kod źródłowy wygląda tak:

    <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>

Jeśli jednak spróbuję zeskrobać z następującym kodem Pythona:

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)

Dostaję

<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>

Niestety, nie ma tam łącza HREF. Jak mogę to dostać?

1
user47091 24 lipiec 2020, 12:18

1 odpowiedź

Najlepsza odpowiedź

Istnieje podstawowy adres URL64 zakodowany w data-encoded-url:

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

Jak widać, adres URL wydaje się wyściełany z nonsensem lub jakimś rodzajami flagami, więc będziesz chciał to rozebrać.

2
L3viathan 24 lipiec 2020, 09:32