Форум сайта python.su
0
Изучаю книгу автоматизация рутинных задач. Уже столкнулся с тем что некоторые советы устарели.
Есть задача в книге скачать картинку с сайта flickr.com
Пытаюсь скачать первую же из предлагаемых но не могу найти её не по id не по имени класса.
Подскажите как правильно это сделать и xpath и селекторы пробовал. Но ID картинки меняются каждый раз. И итог selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .overlay no-outline
https://www.flickr.com/search/?text=Paris
from selenium.webdriver.common.keys import Keys from selenium import webdriver import requests, os, bs4, time url = "https://www.flickr.com" # начальный URL-адрес os.makedirs("flickr", exist_ok=True) # сохраняет картинки в папку flickr counter = 5 browser = webdriver.Firefox() browser.get(url) #while counter <= 5: browser.find_element_by_id("search-field").send_keys("Paris") browser.find_element_by_id("search-field").send_keys(Keys.ENTER) browser.get("https://www.flickr.com/search/?text=Paris") time.sleep(3) imagesel = browser.find_element_by_class_name("overlay no-outline")
Офлайн
13
from requests import get from os import makedirs from bs4 import BeautifulSoup as bs URL = "https://www.flickr.com" content = bs(get(URL + "/search/?text=moon", headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20121202 Firefox/20.0", "Connection": "close"}).text, 'html.parser') photos = [URL + a.get('href') for a in content.find_all('a') if a.get('class') == ''overlay" and a.get("href").startswith('/photos/')] os.makedirs("flickr", exist_ok=True) for photo in photos: with open('photo_' + str(photos.index(photo)) + ".jpg", 'wb') as _photo: # не знаею расширение _photo.write(get(photo, headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20121202 Firefox/20.0", "Connection": "close"}).content) print('Done!')
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн
0
Скачает все фотки со страницыСпасибо. А почему не ищется например по имена класса как я пробовал? Это какая то защита на сайтах?
Офлайн