Как распечатать все элементы div по отдельности

#python #selenium #selenium-chromedriver

#python #селен #selenium-chromedriver

Вопрос:

Я пытаюсь распечатать все элементы ссылок из div, используя Python Selenium.

Вот как выглядит HTML:

 
<div class="card-body player-list py-2">
            <a translate="no" href="/profile/Cheskis.6" class="namemc-rank namemc-rank-10">Cheskis<img class="emoji" draggable="false" src="https://static.namemc.com/i/emoji/twitter/1f629.svg" alt="😩"></a>
            <a translate="no" href="/profile/collage.2" class="namemc-rank namemc-rank-10">collage<img class="emoji" draggable="false" src="https://static.namemc.com/i/emoji/twitter/2603-fe0f.svg" alt="☃️"></a>
            <a translate="no" href="/profile/Hilloy.1" class="namemc-rank namemc-rank-10">Hilloy<img class="emoji" draggable="false" src="https://static.namemc.com/i/emoji/twitter/1f3c2-1f3fc.svg" alt="🏂🏼"></a>
            <a translate="no" href="/profile/Xeronsis.1" class="namemc-rank namemc-rank-100">Xeronsis<img class="emoji" draggable="false" src="https://static.namemc.com/i/emoji/twitter/2604-fe0f.svg" alt="☄️"></a>
            <a translate="no" href="/profile/123maarten123.3">123maarten123</a>
            <a translate="no" href="/profile/59_.2">59_</a>
            <a translate="no" href="/profile/5uso.1">5uso</a>
            <a translate="no" href="/profile/62h.4">62h</a>
            <a translate="no" href="/profile/Acented.1">Acented</a>
            <a translate="no" href="/profile/Aeltumn.1">Aeltumn</a>
            <a translate="no" href="/profile/Aerh.3">Aerh</a>
            <a translate="no" href="/profile/Aikiebo.2">Aikiebo</a>
            <a translate="no" href="/profile/Aksiome.1">Aksiome</a>
            <a translate="no" href="/profile/ALEX_CY.1">ALEX_CY</a>
            <a translate="no" href="/profile/aminerman.1">aminerman</a>
            <a translate="no" href="/profile/AnatoleAM.1">AnatoleAM</a>
            <a translate="no" href="/profile/anyminerman.1">anyminerman</a>
            <a translate="no" href="/profile/Archee.1">Archee</a>
            <a translate="no" href="/profile/Arrgs.1">Arrgs</a>
            <a translate="no" href="/profile/Arth2000.2">Arth2000</a>
            <a translate="no" href="/profile/ArwenOC.1">ArwenOC</a>
            <a translate="no" href="/profile/AryFireZ.1">AryFireZ</a>
            <a translate="no" href="/profile/Asometric.1">Asometric</a>
            <a translate="no" href="/profile/b3nj1.4">b3nj1</a>
            <a translate="no" href="/profile/bananenbroek4.1">bananenbroek4</a>
            <a translate="no" href="/profile/BartTheBart.1">BartTheBart</a>
            <a translate="no" href="/profile/BigNinjaChicken.1">BigNinjaChicken</a>

 

Я использую этот код, но он печатает все в одной строке, а это не то, что я ищу.

 import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException

PATH = "C:Program Files (x86)chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get('https://pl.namemc.com/cape/11a3dcc4d826d0a1')
holder_list = driver.find_elements_by_css_selector('body > main > div > div:nth-child(2) > div > div > div.card-body.player-list.py-2')
for elm in holder_list:
    print(elm.text)
 

Кто-нибудь знает, как печатать каждый элемент div отдельно в другой строке?

Комментарии:

1. print() по умолчанию добавляет новую строку в конце, поэтому я не понимаю, как этот код печатает все в одной строке.

2. @JohnGordon просто попробуйте запустить его. Он печатает каждый элемент в одной строке

Ответ №1:

Вы печатаете elem.text одного элемента. Поскольку элемент является родительским, он также печатает весь текст в дочернем элементе . Поэтому, если вы хотите распечатать его отдельно, вместо этого найдите тег xhild ‘a’ . Печать по умолчанию печатается в отдельных строках

 holder_list = driver.find_elements_by_css_selector('body > main > div > div:nth-child(2) > div > div > div.card-body.player-list.py-2 > a')
for elm in holder_list:
    print(elm.text)
 

Вывод:

введите описание изображения здесь