1

现在,在我的代码中,我从一个显示球员名单的棒球网站检索了 HTML。HTML 中有多个表格,我只想要下面发布的表格中的数据。我不确定如何仅从 HTML 中解析该表。

/*this code retrieves the HTML and is what I've tried to do */  
if let url = URL(string: "https://www.examplewebsite.com") {
            do {
                let contents = try String(contentsOf: url)
                statsHTML = contents //statsHTML is a string 

                let doc: Document = try SwiftSoup.parse(statsHTML)
                let table : [Element] = try doc.getElementsByTag("div").array() //attempt to parse by div name

                for div in table {
                    let statsTable = try div.getElementById("baseball-hitting-stats-table") //name of table 
                    print(statsTable) //prints all nil values
                }




/*This is a section of the table in HTML code that I want to 
parse*/

<div name="baseball-hitting-stats-table" class="team-stats-table">

<div class="collclubsports-component tab-wrapper"> <h3 
class="stats-title">Hitting Stats</h3><div style="overflow:auto;">   
<table class="collclubsports-component table-reponsive stats- 
 table">

 </thead><tbody class="collclubsports-component active" name="page- 
 1"><tr><td><a href="/league/player/?player=36c85410-e987-4a73- 
 8b36-e8c0d7ff1eed&season=46d3ea9a-a080-4273-befb- 
 58b30c2adb01">John, Doe</a></td><td>13</td><td>2</td><td>7</td> 
 <td>0</td><td>0</td><td>0</td><td>5</td><td>2</td><td>2</td> 
 <td>2</td><td>0</td><td>0.538</td><td>0.600</td><td>0.538</td> 
 <td>1.138</td><td>0</td><td>0</td><td>0</td><td>0</td><td>7</td> 
 <td>0</td><td>15</td></tr> </table>

我成功检索了所有 div 元素并使用 getElementsByID 试图检索我想要的表,但它打印所有 nil。谢谢你的帮助。

4

1 回答 1

0

name在 div 上使用名称baseball-hitting-stats-table,然后尝试使用document.getElementById(). name是与document.allor一起使用的较旧的 DOM 查询document.getElementsByName()

我会使用document.getElementById(),但你需要id在元素上放一个,而不是name.

因此,如果可以的话,只需在标记中更改这一行。
之前:
<div name="baseball-hitting-stats-table" class="team-stats-table">
之后:
<div id="baseball-hitting-stats-table" class="team-stats-table">

或者,如果您无法更改标记,您可以使用
document.getElementsByName('baseball-hitting-stats-table')[0]

document.all.baseball-hitting-stats-table

于 2019-11-05T16:27:26.340 回答