簡體   English   中英

如何使用 selenium 從 中提取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM