硒:get_attribute一个条件

时间:2018-09-01 18:29:05

标签: python selenium

我正在抓捕一个网站,并且确实有解决方案,但是我相信有一个更好的解决方案。我不喜欢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 :(得分:1)

更快捷,更干净的解决方案是使用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'))

答案 1 :(得分:1)

您可以通过以下一线获得所需的输出:

verein = [img.get_attribute('alt') for img in driver.find_elements("css", ".tiny_wappen")]