添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我想通过使用Selenium从表中获取内容到数组。

0 人关注

嘿,伙计们,我想通过使用Selenium从网站的表格中获取内容。

here my first try:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.javatpoint.com/html-table')
texts = driver.find_elements_by_xpath("//td/table")
print(texts)

the retult

然后我想通过使用以下方法将其改为textcontent

get_property('textContent')

并出错说AttributeError:'NoneType'对象没有属性'get_property'。

所以我想知道如何获得表格内容并将其转为数组

ps. python version 3.7.4

1 个评论
你想提取表的内容吗?
python
selenium
web-scraping
oneminute
oneminute
发布于 2019-10-06
2 个回答
Moshe Slavin
Moshe Slavin
发布于 2019-10-06
已采纳
0 人赞同

如果你正在寻找表格中的所有文本,只需使用 .text 。像这样。

from pprint import pprint
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.javatpoint.com/html-table')
texts = [i.text for i in driver.find_elements_by_xpath("//td/table")]
pprint(texts)

Output:

['Tag Description\n'
 '<table> It defines a table.\n'
 '<tr> It defines a row in a table.\n'
 '<th> It defines a header cell in a table.\n'
 '<td> It defines a cell in a table.\n'
 '<caption> It defines the table caption.\n'
 '<colgroup> It specifies a group of one or more columns in a table for '
 'formatting.\n'
 '<col> It is used with <colgroup> element to specify column properties for '
 'each column.\n'
 '<tbody> It is used to group the body content in a table.\n'
 '<thead> It is used to group the header content in a table.\n'
 '<tfooter> It is used to group the footer content in a table.',
 'First_Name Last_Name Marks\n'
 'Sonoo Jaiswal 60\n'
 'James William 80\n'
 'Swati Sironi 82\n'
 'Chetna Singh 72',
 'First_Name Last_Name Marks\n'
 'Sonoo Jaiswal 60\n'
 'James William 80\n'
 'Swati Sironi 82\n'
 'Chetna Singh 72',
 'Name Last Name Marks\n'
 'Sonoo Jaiswal 60\n'
 'James William 80\n'
 'Swati Sironi 82\n'
 'Chetna Singh 72',
 'Name Last Name Marks\n'
 'Sonoo Jaiswal 60\n'
 'James William 80\n'
 'Swati Sironi 82\n'
 'Chetna Singh 72',
 'Name Mobile No.\nAjeet Maurya 7503520801 9555879135',
 'Name Ajeet Maurya\nMobile No. 7503520801\n9555879135',
 'Element Chrome IE Firefox Opera Safari\n<table> Yes Yes Yes Yes Yes']

如果你想使用get_property('textContent'),你可以做到。

from pprint import pprint
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.javatpoint.com/html-table')
texts = [i.get_property('textContent') for i in driver.find_elements_by_xpath("//td/table")]
pprint(texts)

Output:

['\n'
 'TagDescription\n'
 '<table>It defines a table.\n'
 '<tr>It defines a row in a table.\n'
 '<th>It defines a header cell in a table.\n'
 '<td>It defines a cell in a table.\n'
 '<caption>It defines the table caption.\n'
 '<colgroup>It specifies a group of one or more columns in a table for '
 'formatting.\n'
 '<col>It is used with <colgroup> element to specify column properties for '
 'each\n'
 'column.\n'
 '<tbody>It is used to group the body content in a table.\n'
 '<thead>It is used to group the header content in a table.\n'
 '<tfooter>It is used to group the footer content in a table.\n',
 'First_NameLast_NameMarks\n'
 'SonooJaiswal60\n'
 'JamesWilliam80\n'
 'SwatiSironi82\n'
 'ChetnaSingh72\n',
 'First_NameLast_NameMarks\n'
 'SonooJaiswal60\n'
 'JamesWilliam80\n'
 'SwatiSironi82\n'
 'ChetnaSingh72\n',
 '  \n'
 '  Name\n'
 '  Last Name\n'
 '  Marks\n'
 '  \n'
 ' SonooJaiswal60\n'
 'JamesWilliam80\n'
 'SwatiSironi82\n'
 'ChetnaSingh72\n',
 '  \n'
 '  Name\n'
 '  Last Name\n'
 '  Marks\n'
 '  \n'
 ' SonooJaiswal60\n'
 'JamesWilliam80\n'
 'SwatiSironi82\n'
 'ChetnaSingh72\n',
 '  \n'
 '  Name\n'
 '  Mobile No.\n'
 '  \n'
 '  \n'
 '  Ajeet Maurya\n'
 '  7503520801\n'
 '  9555879135\n'
 '  \n',
 '  \nNameAjeet Maurya  \nMobile No.7503520801  \n9555879135  \n',
 '\nElement Chrome IE Firefox Opera Safari\n<table>YesYesYesYesYes\n']
    
非常感谢你,但这个方法不能得到空的TD,所以如果我想检查并将其设置为空的TD或空间的数组,我应该怎么做?
Yosuva Arulanthu
Yosuva Arulanthu
发布于 2019-10-06
0 人赞同

这将把表格单元格内容存储到一个数组中

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('/usr/local/bin/chromedriver')  # Optional argument, if not specified will search path.
driver.implicitly_wait(15)
driver.get("https://www.javatpoint.com/html-table");
table_rows= driver.find_elements(By.XPATH,"(//p[contains(text(),'HTML table')]/following-sibling::table[@class='alt'])[1]//tr/td")
for rows in table_rows:
    #print rows.text
    x.append( rows.text)
print x
driver.quit()

Output

<table>
It defines a table.
It defines a row in a table.
It defines a header cell in a table.
It defines a cell in a table.
<caption>
It defines the table caption.
<colgroup>
It specifies a group of one or more columns in a table for formatting.
It is used with <colgroup> element to specify column properties for each column.
<tbody>
It is used to group the body content in a table.