【发布时间】:2021-11-23 23:44:31
【问题描述】:
我试图从我的表中获取类td 的数据元素,但我的代码始终只能从thead 中提取行。如果我添加find_element_by_tag_name("tbody"),那么我会得到经典的消息:没有这样的元素:无法找到元素...。有什么建议吗?
源码:来自https://shinyapps.asee.org/apps/Profiles/
<table class="cell-border stripe compact dataTable no-footer" id="DataTables_Table_4" role="grid" aria-describedby="DataTables_Table_4_info">
<thead>
<tr>
<th>...</th>
.
.
.
</tr>
</thead>
<tbody>
<tr>
<td>...</td>
.
.
.
</tr>
.
.
.
</tbody>
</table>
Selenium Python:
for opt in element.find_elements_by_css_selector("div.option"):
#Record College Names
colleges.append(opt.get_attribute("data-value"))
time.sleep(2)
#Select College
opt.click() #does pull data into graph
#Scrape Data
table = driver.find_element_by_tag_name("table")
alldata = table.find_element_by_tag_name("tbody")
rows = table.find_elements_by_tag_name("tr")
#print(table.tag_name)
for row in rows:
print(row.tag_name)
data = []
data.append(year)
data.append("Degrees Awarded")
data_elements = row.find_elements_by_tag_name("td")
#add to pandas table
for fact in data_elements:
try:
data.append(fact.text)
except:
print("nothing")
print(data)
#DF.loc[len(DF.index)]=data
#reclick on dropdown box to get next school's data
element.click()
【问题讨论】:
-
有时人们会从表格中遗漏
tbody元素,但大多数浏览器似乎会自动插入一个。检查页面的原始源(不是元素检查器)以查看表格是否实际包含tbody。如果没有,您应该能够直接从table获取行(tr)。 -
我尝试不包括 tbody 行,它只是从标题返回 tr。
标签: python pandas selenium datatables