Sie eine Liste der Bilder von Javascript extrahieren können die Beautiful Soup und json Module verwenden, dann über die Liste iterieren und rufen Sie die Bilder, die Sie interessiert sind
EDIT:.
Das Problem war, dass Die Bilder haben denselben Namen und wurden überschrieben. Das Holen der ersten drei Bilder ist trivial, aber Verweise auf die anderen Bilder im Karussell werden nicht geladen, bis das Karussell geöffnet wird, also ist das schwieriger. Für einige Bilder können Sie eine Version mit höherer Auflösung finden, indem Sie "Foto-s" im Pfad durch "Foto-w" ersetzen, aber herausfinden, dass tiefer in die Javascript-Logik eingetaucht werden muss.
import urllib, re, json
from bs4 import BeautifulSoup as bs
def img_data_filter(tag):
if tag.name == "script" and tag.text.strip().startswith("var lazyImgs"):
return True
return False
response = urllib.urlopen("https://www.tripadvisor.it/Restaurant_Review-g3174493-d3164947-Reviews-Le_Ciaspole-Tret_Fondo_Province_of_Trento_Trentino_Alto_Adige.html")
soup = bs(response.read(), 'html.parser')
img_data = soup.find(img_data_filter)
js = img_data.text
js = js.replace("var lazyImgs = ", '')
js = re.sub(r";\s+var lazyHtml.+", '', js, flags=re.DOTALL)
imgs = json.loads(js)
suffix = 1
for img in imgs:
img_url = img["data"]
if not "media/photo-s" in img_url:
continue
img_name = img_url[img_url.rfind('/')+1:-4]
img_name = "%s-%03d.jpg" % (img_name, suffix)
suffix += 1
urllib.urlretrieve(img_url, img_name)
Der Link, den Sie nicht – BradTheBrutalitist
nicht gab arbeiten mit diesem tut mir leid, versuchen https://www.tripadvisor.it/Restaurant_Review-g3174493-d3164947-Reviews-Le_Ciaspole-Tret_Fondo_Province_of_Trento_Trentino_Alto_Adige.html – WisdomPill
Sie ein verwenden könnte Hyperlink oder Sie könnten Linksklick und gehen Sie zu inspizieren und dann finden Sie das Bild auf der Elementseite. – BradTheBrutalitist