Попытка вычистить список элементов из Википедии, используя jQuery / javascript - PullRequest
0 голосов
/ 04 июня 2011

Поэтому я пытаюсь получить следующий список музыкальных жанров со страницы, подобной этой:

http://en.wikipedia.org/wiki/List_of_styles_of_music:_A-F

Из того, что я могу сказать, используя Chrome для проверки элементов, мне нужно получить доступ к элементам заголовка <ul> elements '<li> elements'. Затем мне нужен доступ к этим переменным, чтобы я мог ввести их в базу данных (но эту часть я могу сделать).

Так как мне получить все элементы ul -> li -> title? Я даже не уверен, как подключиться к этой веб-странице wikipedia.org, чтобы начать чистку. Я относительно новичок в jQuery, но до сих пор наслаждаюсь его потрясающей мощью!

Спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 04 июня 2011
0 голосов
/ 04 июня 2011

Вы можете использовать XPath для помощи:

var snapshot = document.evaluate('//ul/li/a[1]/@title', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

Это создает снимок всех узлов в документе, который соответствует запросу XPath. Вышеупомянутый XPath запрашивает атрибут title первого элемента ссылки, который является дочерним для <li>, который является дочерним для <ul>.

После получения снимка вы можете выполнить итерацию по нему и получить имена:

for (var i = 0; i < snapshot.snapshotLength; i ++) console.log(snapshot.snapshotItem(i).nodeValue);

(код выше можно запустить в консоли веб-инспектора chrome.)


Вы также можете сделать то же самое в PHP, просто загрузите документ в DOMDocument:

$doc = new DOMDocument;
$doc->loadHTML(file_get_contents('http://en.wikipedia.org/wiki/List_of_styles_of_music:_A-F'));

И использовать XPath для запроса:

$xp = new DOMXPath($doc);
foreach ($xp->query('//ul/li/a[1]/@title') as $node) {
    echo "$node->nodeValue\n";
}
...