[英]How to extract the value from the <td> element within the table using Selenium and Python
[英]How to extract the value from the <td> by using selenium
所以我使用 selenium webdriver 來解析來自 web 站點的日期(class_name,tag_name,Xpath,css_selector)和我所有的數據嘗試都失敗了。 在這個例子中,我正在嘗試使用 BS4。 我得到的只是來自“th”的文本。 如何從“td”獲取文本?
driver.get(slot)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
table = soup.find_all('tr')
for x in table:
print(x.get_text())`enter code here
html
<table data-v data-qa="table" class"table">
<tr data-v>
<th data-v> Name </th>
<th data-v> Last_name </th>
<th data-v> Phone </th>
<th data-v> City </th>
<th data-v> Salary </th>
</tr data-v>
<tr data-v data-qa="table-row">
<td data-v class="table-name not-editable">Tetyana</td>
<td data-v class="table-last-name not-editable">Ferguson</td>
<td data-v class="table-phone not-editable">252-823-1658</td>
<td data-v class="table-city not-editable">Tarboro</td>
<td data-v class="table-salary not-editable">10000</td>
</tr data-v>
<tr data-v data-qa="table-row">
<td data-v class="table-name not-editable">Alyonka</td>
<td data-v class="table-last-name not-editable">Andrews</td>
<td data-v class="table-phone not-editable">603-608-7504</td>
<td data-v class="table-city not-editable">Northwood</td>
<td data-v class="table-salary not-editable">12000</td>
</tr data-v>
</table>
你已經在soup.find_all('tr')
中加入了"tr',所以你在tr(table) header。如果你把'td'放在那里,你會得到td(row)數據。讀取表格時,你也可以試試pandas .read_html 方法在許多情況下都會有所幫助。
import pandas as pd
from bs4 import BeautifulSoup
html_src="""
<table data-v data-qa="table" class"table">
<tr data-v>
<th data-v> Name </th>
<th data-v> Last_name </th>
<th data-v> Phone </th>
<th data-v> City </th>
<th data-v> Salary </th>
</tr data-v>
<tr data-v data-qa="table-row">
<td data-v class="table-name not-editable">Tetyana</td>
<td data-v class="table-last-name not-editable">Ferguson</td>
<td data-v class="table-phone not-editable">252-823-1658</td>
<td data-v class="table-city not-editable">Tarboro</td>
<td data-v class="table-salary not-editable">10000</td>
</tr data-v>
<tr data-v data-qa="table-row">
<td data-v class="table-name not-editable">Alyonka</td>
<td data-v class="table-last-name not-editable">Andrews</td>
<td data-v class="table-phone not-editable">603-608-7504</td>
<td data-v class="table-city not-editable">Northwood</td>
<td data-v class="table-salary not-editable">12000</td>
</tr data-v>
</table>
"""
選項1:
df=pd.read_html(html_src)
print(df[0].head(10))
#output
Name Last_name Phone City Salary
0 Tetyana Ferguson 252-823-1658 Tarboro 10000
1 Alyonka Andrews 603-608-7504 Northwood 12000
選項2:
soup=BeautifulSoup(html_src)
for each in soup.find_all("td"):
print(each.get_text())
#output:
Tetyana
Ferguson
252-823-1658
Tarboro
10000
Alyonka
Andrews
603-608-7504
Northwood
12000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.