【发布时间】: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