2015-08-21 1 views
1

Я хотел бы собирать данные с веб-страницы, где есть много таких строк?getElementsByClassName и <a class="asdf" href="url.com">String</a>

<a class="asdf" href="http://url.com/jkl/0123/qwer">String</a> 

От этой линии мне нужны номера из URL (0123) и String. Я мог бы понять, как получить цифры, но у меня проблемы с String. У меня есть этот код, который собирают числа в массиве:

var titles = document.getElementsByClassName("link-title"); 
var ids=[]; 
var tmp; 
var i; 
for (i=0; i<titles.length; i++) { 
    tmp=titles[i].toString().split("/"); 
    ids.push(tmp[4]); 
} 

Можно ли получить String S от titles? Я полностью нелюбив для javascript, хотя я изучил java и немного xml, и я мог бы сделать это в java, но на веб-странице есть что-то DDoS-защита, поэтому я не могу подключиться/загрузить его.

+1

' linkTitle = titles [i] .innerText; 'внутри цикла' for' – Tushar

ответ

2

То, что вы получаете от getElementsByClassName(), являются узлами DOM. .toString() функция не будет очень полезно, но DOM API, позволит вам получить атрибуты и содержимое узла:

for (i=0; i<titles.length; i++) { 
    ids.push(titles[i].href); 
} 

Это было бы извлечь href атрибуты в ваш массив. (Вы можете все еще точка, что .split() если вы хотите куски URL, конечно.) Если вы хотите текст:

for (i=0; i<titles.length; i++) { 
    ids.push(titles[i].textContent); 
} 

быть совместим с Internet Explorer, который был бы:

for (i=0; i<titles.length; i++) { 
    ids.push(titles[i].textContent || titles[i].innerText); 
} 
+0

Спасибо за быстрый ответ, работающий отлично! – junpet

Смежные вопросы