Я хочу проанализировать (с Javascript или JSoup) веб-сайт. Моя проблема в том, что я не знал, как получить доступ к требуемым данным, потому что в этом файле практически нет идентификаторов.Анализ данных из HTML без идентификаторов
У меня есть что-то вроде:
<div id content>
<table>
<tbody>
<tr>
<td align >
<div style=>
<table>
<tbody>
<tr></tr>
<tr></tr>
<tr>
<td>
<br></br>
<h2><div class=""></div>Related</h2>
Adaptation:
<a href="/link">nameOfBook</a>
<br></br>
Prequel:
<a href="/link2">nameOfBook2</a>
<br></br>
Other:
<a href="link3"></a>
<br></br>
<br></br>
<h2></h2>
<table width0"></table>
..........many tables and a.....
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
Хотелось бы надеяться его понятным, сайт довольно большой. Я хочу материал после родственника. Так что я хочу, чтобы Sequel был связан с тремя именами и их ссылками. И тогда имя преквела3.
На данный момент я получаю #content, тогда я получаю массив со всеми тегами h2 и проверяю второго ребенка, если он равен «Связанный». Затем я получаю родительский (td) и перебираю все «а». В этом одном td более 200 a's.
Мой план состоял в том, чтобы перебирать их и проверить, есть ли перед этим «а» термин (приквел, сиквел или адаптация), но это звучит немного сложно.
Или я мог разобрать все между двумя тегами h2, потому что он всегда там. Или, я мог проверить ссылку, потому что у желаемых всегда была одна и та же структура. Итак, найдите эту структуру, а затем перейдите к родительскому объекту и проверьте, что это за термин.
Кто-нибудь может мне помочь? Во всем документе нет идентификаторов или имен. Я уверен, что я могу найти обходное решение для этого, но это будет слишком сложно и с некоторыми знаниями JS легко получить.
ОБНОВЛЕНИЕ:
подмигнули не известно, сколько Приквел/Sequel независимо Метки будут там. Единственное, что я действительно знал, это то, что будет «Связанный» текст между двумя h2-тегами, а следующее начало h2 - это начало чего-то нового.
И изменил приведенный выше пример: теперь это правильная структура, #content снова находится в div, но я думаю, что это не важно, потому что я могу напрямую обращаться к контенту.
Покажите нам свою JS, было бы легче понять и помочь;). – Bladepianist
советую использовать ** DOM ** и ** XPath **. http://stackoverflow.com/questions/6466831/selecting-element-from-dom-with-javascript-and-xpath – Brcinho
Вы уверены, что ваша разметка '
ответ
Вы можете использовать
document.querySelector
илиdocument.querySelectorAll
и относительный выбор соответствующего элемента.Например: выбрать первые три
a
теги в сНу [ID = «содержание»]Если у вас нет каких-либо Идентификаторы вообще, то вы, вероятно, следует использовать относительный путь (что-то вроде Xpath или CSS-селектора).
С помощью селектора CSS вы будете использовать что-то вроде этого,
Или вы можете использовать XPath см w3school
Примечание: Если вы хотите вещи немного легче вы можете даже использовать JQuery для выполните то же самое.
Update:
Таким образом, для ваших потребностей, вы должны сделать это.
Таким образом,
источник
2015-05-20 09:47:10
ohh did not знал, что я могу использовать XPAtH с js. Нет, первый пример вернет более 80 элементов, как их отличить? Второй вернул бы мой первый «а», верно? Тогда я могу получить другие с .nexSibling и так далее. Но как я могу получить текст Sequel/Prequel? – Nemos
Это может помочь вам начать с XPath в js http://www.w3schools.com/xpath/xpath_examples.asp. И немного изменил мой ответ (выделенный селектор Xpath и CSS) для большей ясности. –
Спасибо, и я добавила в редакцию мой комментарий :) Я все еще нажимаю Enter, когда хочу сделать абзац:/ – Nemos
Мое мнение по этому вопросу будет:
Этот метод имеет преимущество работы даже при наличии ссылки внутри первого (раздели)
table
.Но это не будет работать, если первые (раздел)
table
содержитh2
элементов ... В этом случае, вместоВы должны использовать
EDITисточник
2015-05-20 09:59:16 Camusensei
Спасибо, но я не знаю, сколько Элементов, которые мне нужны, будут в HTML. Таким образом, статический путь, вероятно, не работает. Я редактировал свой стартовый пост. – Nemos
Там вы идете. Все ссылки, независимо от того, что на странице выводится в консоли. – Camusensei
Nevermind, я не видел изменения разметки -_- «Я исправлю это – Camusensei
Смежные вопросы