Selenium: get_attribute одно условие - PullRequest
0 голосов
/ 01 сентября 2018

Я перебираю сайт и у меня есть решение, но я уверен, что есть лучшее. Мне не нравится выражение if, и я думаю, что может быть лучше.

 driver = webdriver.Chrome("....chromedriver_win32/chromedriver.exe")
 driver.get("https://www.transfermarkt.de/yannick-gerhardt/leistungsdatendetails/spieler/119277/saison//verein/0/liga/0/wettbewerb//pos/0/trainer_id/0/plus/1")
 verein = []
 bilder=driver.find_elements_by_tag_name("img")
 for b in bilder:
     if "tiny_wappen" in b.get_attribute('class'):
         verein.append(b.get_attribute('alt'))

 <img src="https://tmssl.akamaized.net//images/wappen/tiny/21087.png? 
lm=1503056592" title="&nbsp;" alt="VfL Wolfsburg U17" class="tiny_wappen">

Это вывод, в котором указаны все клубы, в которых играл игрок.

 ['VfL Wolfsburg',
  'VfL Wolfsburg',
  'VfL Wolfsburg',
  'VfL Wolfsburg',
  'VfL Wolfsburg',
  'VfL Wolfsburg',
  'VfL Wolfsburg',
  'VfL Wolfsburg',
  '1.FC Köln',
  '1.FC Köln',
  '1.FC Köln',
  '1.FC Köln',
  '1.FC Köln',
  '1.FC Köln',
  '1.FC Köln U19',
  '1.FC Köln II',
  '1.FC Köln U19',
  '1.FC Köln U19',
  '1.FC Köln U17',
  '1.FC Köln U17',
  '1.FC Köln U17']

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Вы можете получить требуемый результат с ниже одной строки:

verein = [img.get_attribute('alt') for img in driver.find_elements("css", ".tiny_wappen")]
0 голосов
/ 01 сентября 2018

Более быстрое и чистое решение - использовать Javascript:

 verein = driver.execute_script("return [...document.querySelectorAll('img.tiny_wappen')].map(element => element.getAttribute('alt'));")

с чистым селеном: img с tiny_wappen класс

bilder=driver.find_elements_by_css_selector("img.tiny_wappen")
for b in bilder:
     verein.append(b.get_attribute('alt'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...