Как напечатать весь текст внутри тега <div>, который находится внутри <li>python селена - PullRequest
0 голосов
/ 11 апреля 2020

Привет всем, я хочу напечатать список имен внутри тега <div>, а тег <div> находится внутри тега <li> ниже. Я прикреплю фрагмент HTML. Пожалуйста, помогите мне распечатать его.

В приведенном ниже фрагменте есть класс linkedAccountUserName, например, у меня есть 6 имен одно под другим, я хочу напечатать имена.

Я используя python селен, чтобы получить его.

enter image description here

вот фрагмент веб-сайта. Я нажму значок профиля и перечислю все имена, доступные ниже Связанный аккаунт enter image description here

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Поскольку вы не добавили код html, я не смог протестировать этот код. Вот мой предполагаемый фрагмент кода html, и он называется 'test_ html. html':

<!doctype html>

<html lang="en">

<head>
  <meta charset="utf-8">
  <title>Test</title>
</head>

<body>
  <ul>
    <li class="item">
      <div class="linkedAccountUserName">user1</div>
    </li>
    <li class="item">
      <div class="linkedAccountUserName">user2</div>
    </li>
    <li class="item">
      <div class="linkedAccountUserName">user3</div>
    </li>
  </ul>
</body>

</html>

Вот код для получения имен. Я проверил это, и он печатает: user1 user2 user3

from selenium import webdriver
browserProfile = webdriver.ChromeOptions()
browserProfile.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
browser = webdriver.Chrome("./chromedriver", options=browserProfile)
browser.get("file:///home/mahsa/test_html.html")
names = browser.find_elements_by_css_selector('div[class=\'linkedAccountUserName\']')
for i in range(len(names)):
  print(names[i].text)
0 голосов
/ 11 апреля 2020

Сначала вы должны найти тег <li> с классом item. После этого вы должны перебрать все элементы <div>. У меня нет вашего кода, чтобы воспроизвести его, но это будет что-то вроде этого, где суп - это HTML с BeautifulSoup :

#Getting the data 
driver = webdriver.Chrome(options=chrome_options)
driver.get(URL)
soup = BeautifulSoup(driver.page_source, 'html.parser')
#Printing the data you want
li = soup.find('div',attrs={'class':'item'})
divs = li.findAll("div")
for div in divs:
  print(div.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...