Как получить доступ к деталям (т. Е. К подполям) второго / третьего элементов, которые имеют одинаковое имя класса в селене, используя python? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть 3 элемента с конкретным экземпляром (например: 3 <div class="sc-1xo2hia-0 TegxE"> под каждым <div direction="vertical" class="sc-1fp9csv-0 iFnncD"> в веб-сайте: https://www.blockchain.com/btc/block/00000000000000000004b91bad9ecfa8c0e57c256d0007cca6f0a2a9e54a2ccc; нажмите «Проверить элемент» в первой транзакции, чтобы просмотреть конкретныйДерево DOM)

Теперь я хочу получить доступ к некоторым элементам из 2-го и 3-го экземпляра первого тега (sc-1xo2hia-0 TegxE)

Как мне сделать это эффективно?

PS: Этот код:

from selenium import webdriver driver=webdriver.Firefox() driver.get('https://www.blockchain.com/btc/block/00000000000000000004b91bad9ecfa8c0e57c256d0007cca6f0a2a9e54a2ccc') Txn_elements=driver.find_elements_by_xpath('//div[@class="sc-1fp9csv-0 iFnncD"]') length=len(Txn_elements) for i in range(0,length): element=Txn_elements[i] data=element.find_elements_by_xpath(".//div[@class='sc-1xo2hia-0 TegxE'][1]") print data[0].text

все еще печатает детали только 0-го <div class="sc-1xo2hia-0 TegxE">, то есть он все еще печатает:

Hash fc1630ec40d95da3fcca40d499c4be616ea6591dda6f0d3d85a678d47c91ae62 2019-11-06 8:37 PM

где, как должно было быть напечатано:

17A16QmavnUfCW11DAApiJxp7ARnxN5pGX 2.62352930 BTC

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Пожалуйста, проверьте решение ниже, оно работает, но я не уверен, почему вы используете для цикла, если вы просто хотите напечатать два элемента в //div[@class="sc-1fp9csv-0 iFnncD"]

, если вы хотите напечатать только один, а затем удалить для циклаи попробуйте выполнить свой код

driver.get('https://www.blockchain.com/btc/block/00000000000000000004b91bad9ecfa8c0e57c256d0007cca6f0a2a9e54a2ccc')
Txn_elements=driver.find_elements_by_xpath('//div[@class="sc-1fp9csv-0 iFnncD"]')
length=len(Txn_elements)
for i in range(0,length):
    element=Txn_elements[i]
    data=element.find_elements_by_xpath("//body/div[@id='__next']/div[@class='sc-1myx216-0 iygrgv']/div[@class='p5q4id-0 fasJHc sc-5vnaz6-1 doVOgS']/div[@class='fieq4h-0 klQmUt']/div[@class='xoxfsb-0 bmukdK']/div[3]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]")
    print data[0].text

    data1 = element.find_elements_by_xpath(
        " //body/div[@id='__next']/div[@class='sc-1myx216-0 iygrgv']/div[@class='p5q4id-0 fasJHc sc-5vnaz6-1 doVOgS']/div[@class='fieq4h-0 klQmUt']/div[@class='xoxfsb-0 bmukdK']/div[3]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/span")
    print data1[0].text

Попробуйте найти решение ниже для идентификатора транзакции

driver.get('https://www.blockchain.com/btc/block/00000000000000000004b91bad9ecfa8c0e57c256d0007cca6f0a2a9e54a2ccc')


List1 = driver.find_elements_by_xpath("//body/div[@id='__next']/div[@class='sc-1myx216-0 iygrgv']/div[@class='p5q4id-0 fasJHc sc-5vnaz6-1 doVOgS']/div[@class='fieq4h-0 klQmUt']/div[@class='xoxfsb-0 bmukdK']/div[*]/div[2]/div[1]/div[2]/div/div/div/a")
for items in List1:
    print (items.text)

List2 = driver.find_elements_by_xpath("//body/div[@id='__next']/div[@class='sc-1myx216-0 iygrgv']/div[@class='p5q4id-0 fasJHc sc-5vnaz6-1 doVOgS']/div[@class='fieq4h-0 klQmUt']/div[@class='xoxfsb-0 bmukdK']/div[*]/div[2]/div[1]/div[2]/div/div/div/div/span")
for items in List2:
    print (items.text)
0 голосов
/ 07 ноября 2019
xpath= (.//div[@class='ge5wha-0 bLrlXr']/a)[1] //to get 17A16QmavnUfCW11DAApiJxp7ARnxN5pGX
xpath = (.//div[@class='ge5wha-1 bWdiuU']/span)[1] //to get 2.62352930 BTC

попробуйте с этим xpath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...