【问题标题】:Error when trying to getting table cell value尝试获取表格单元格值时出错
【发布时间】:2015-11-02 11:50:37
【问题描述】:

我正在尝试从this website 创建一个 IP 地址和端口号数组。 但问题是我得到一个错误

TypeError: table.rows[i].cells[0].getElementsByTagName(...)[0] 未定义

这是我的代码:

var table = document.getElementsByClassName('DataGrid')[0];
var n = table.rows.length;
console.log(n);
var list="";

for(var i=1;i<n;i++){

    //var ip = table.rows[i].cells[1].innerHTML;
    var port = table.rows[i].cells[0].getElementsByTagName("a")[0].innerHTML; // error here
    //list+="{"+ip+","+port+"}";

}

第一个单元格值模式如下所示。

<td><script type="text/javascript">IPDecode("")</script><a href="http://www.freeproxylists.net/1.179.183.85.html">1.179.183.85</a></td>

所以我认为我做得对。我是不是犯了一些愚蠢的错误?

注意:我调试并发现有些行没有第二个单元格,但问题是我收到错误。我没有得到至少一个输出期望长度。看图:

【问题讨论】:

  • 向该循环添加一些调试代码,看起来一切都很好,直到脚本点击广告横幅行 - 当然,这里的元素与您正在寻找的不匹配(有一个 iframe 包含一个广告,而不是)。我建议检查getElementsByTagName() 调用中的length,如果不是您所期望的,请在下一行查看continue
  • @PaulRoub 问题是我没有得到至少一个输出。看图片
  • 是的。你得到“53”,行数。您的脚本中没有其他内容不会 输出任何内容。我在循环中添加了类似console.log(table.rows[i].cells[0]) 的内容,以查看发生了什么。
  • @PaulRoub 哎呀,我无法想象为什么我没有看到它。tnx

标签: javascript html web-scraping html-table


【解决方案1】:

此表的某些行包含添加,并且不遵循您尝试获取的 row(cell(a)) 结构。每当你得到 get...By... 的结果时,你应该检查它是否为空,如果它只是用 continue 跳过循环。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多