繁体   English   中英

如何获取文本而不是网络元素 object?

[英]How do I get the text and not the webelement object?

我能够通过循环 go 并打印正确的结果,但是当我尝试下载时,我无法将相同的数据下载到文本文件中。 我知道我遗漏了一些非常简单的东西,或者我在集成 pandas 库时犯了一个错误。 如果有人可以提供帮助,那就太好了。

from time import sleep
import pandas as pd

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

term = driver.find_elements_by_xpath("//tbody/tr")

for row in term:
    columns = row.find_elements_by_xpath("./td")
    termres = []
    for i in columns:
        termres.append(i.text)
    if len(termres) == 7:
        print(termres[0] + '\t' + termres[1] + '\t' + termres[2] + '\t' + termres[3] + '\t' + termres[4])
    elif len(termres) == 10:
        print(termres[0] + '\t' + termres[1] + '\t' + termres[3] + '\t' + termres[4] + '\t' + termres[5])
    elif len(termres) == 1 and termres[0] == 'Unofficial Transcript':
        print('-')
    elif len(termres) == 6 and termres[0].isalpha():
        print(termres[0] + '\t' + termres[1] + '\t' + termres[3] + '\t' + termres[4] )
    #"""
df = pd.DataFrame({'':term})
df.to_csv('term.txt', index= False)
print('downloaded')

打印语句中的 output 是一个巨大的列表,所以我将 output 的一部分作为示例:

CHEM    101     General Chemistry I     TR      3.000
CHEM    103     General Chemistry Lab I TR      1.000
CHEM    151     General Chemistry I     TR      3.000
CHEM    153     General Chemistry I Laboratory  TR      1.000
-
-

然后这是下载到文本文件的内容:

df = pd.DataFrame({'':term})
df.to_csv('term.txt', index= False)
print('downloaded')

#result from the above code in a text file.

"<selenium.webdriver.remote.webelement.WebElement (session=""0c17f0126422f2144127b971ad19e1f6"", element=""65e1e68a-e2c3-48e9-a89d-72c7c1d2811e"")>"
"<selenium.webdriver.remote.webelement.WebElement (session=""0c17f0126422f2144127b971ad19e1f6"", element=""d6f0374b-fe70-4499-abb8-75275f92fc59"")>"

所以问题是我如何获取文本而不是 webelement object?

根据代码行:

term = driver.find_elements_by_xpath("//tbody/tr")

term<tr>元素的列表,每个WebElement表示为:

<selenium.webdriver.remote.webelement.WebElement (session="d4f20fd17bf4037ed8cf50b00e844a7f", element="f12cf837-6c77-4c90-9da2-7b5fb9da9e5d")>

尽管您已经向下遍历到<tr>元素的后代甚至打印了所需的文本,但在您的程序中继续前进,但是在构建dataframe而不是考虑所需的文本时,您已经考虑了存储在term列表中的<tr> ,这是一个 WebElements 列表。

因此,相同的 WebElements 写在文本文件term.txt中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM