Я пытаюсь разобрать большой список ссылок на видео. Я хочу отсортировать их по 2014, 2013, 2012 и так далее, поэтому, например, я выполняю запрос XPath, чтобы получить '2014' и получить все фильмы тот матч 2014 года.

Мои усилия: Пытался сопоставить текст и проверить текст после <br>, но это извлекает все до единого после каждого <br> в документе!

Может, еще что-то с совпадением текста? Т.е. after <br> and text() = '2014 - '?

<td>
<table>
<tbody>
<tr>
<td>
<span>
<br>
2014 -
<a id="3447" class="tippable" href="www.examplemovie.com" style="color:#fff">The MovieName1</a>
<br>
2014 -
<a id="3595" class="tippable" href="www.examplemovie.com" style="color:#fff">MovieName2</a>
<br>

Благодарность!!

1
user3658366 23 Май 2014 в 06:12

2 ответа

Лучший ответ

Я бы посоветовал попробовать

//a[preceding-sibling::node()[1][contains(self::text(), '2014')]]

Это фактически выберет элементы a для 2014 года, что, я думаю, именно то, что вам нужно.

1
JLRishe 23 Май 2014 в 02:27

Вы можете использовать следующее выражение xpath:

//a[contains(preceding-sibling::text()[1], "2014")]

Это в основном означает: дайте мне все теги a, перед которыми стоит текст, содержащий 2014.


Демо:

Представьте, что у вас есть следующий файл index.html:

<table>
    <tbody>
        <tr>
            <td>
                <span>
                    <br/>
                    2014 -
                    <a id="3447" class="tippable" href="www.examplemovie.com" style="color:#fff">The MovieName1</a>
                    <br/>
                    2014 -
                    <a id="3595" class="tippable" href="www.examplemovie.com" style="color:#fff">MovieName2</a>
                    <br/>
                </span>
            </td>
        </tr>
    </tbody>
</table>

Затем вот результат xmllint xpath-теста:

$ xmllint index.html --xpath '//a[contains(preceding-sibling::text()[1], "2014")]'
<a id="3447" class="tippable" href="www.examplemovie.com" style="color:#fff">The MovieName1</a>
<a id="3595" class="tippable" href="www.examplemovie.com" style="color:#fff">MovieName2</a>
1
alecxe 23 Май 2014 в 02:27