Нажмите кнопку css или загрузите все комментарии
Я даже не знаю, прав ли мой вопрос, я имею в виду, я не мог сказать, является ли это кнопкой css, которая не позволяет моему коду работать. Я хочу загрузить все комментарии этого новостного сайта.
Как вы можете видеть, внизу страницы открывается 5 самых последних комментариев, а под ними - кнопка для загрузки дополнительных комментариев. Эта кнопка предназначена для автоматического щелчка, и я считаю, что это кнопка css.
Поскольку моя попытка щелкнуть не удалась, я попытался найти альтернативное решение, но безуспешно. Скрытые комментарии помечены:
class="off"
Когда я удаляю этот класс в firebug, комментарий мгновенно появляется на странице, но я не смог его выбрать или найти с помощью jQuery, когда попробовал следующее:
$("li").removeClass("off");
- Вот мой код ошибки, который, кажется, никогда не находил ожидаемых элементов:
// ==UserScript==
// @name globo coments
// @description globo coments
// @include http://*.globo.com/*.html
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @version 1
// @grant GM_addStyle
// ==/UserScript==
function maisComents(jNode) {
alert('???');
}
waitForKeyElements ("#glb-materia .widget widget-comentarios #boxComentarios .glbComentarios-lista glbComentarios-lista-recentes button .glbComentarios-botao-mais", maisComents);
- На вкладке сценария Firebug вы можете увидеть это:
<div id='boxComentarios'></div>
<script type="text/javascript">
glb.runner.push('comentarios', function(global, $) {
var articleUrl = 'http://ego.globo.com/biquini/noticia/2013/11/marina-elali-exibe-boa-forma-de-biquini.html',
slug = articleUrl.split('/').pop().split('.').shift(),
hash = global.sha1(slug);
$('#boxComentarios').comentarios({
'uri': '/jornalismo/ego/biquini',
'url': articleUrl,
'titulo': slug,
'idExterno': hash,
'exibeTeaserComentarios': true,
'qtdComentariosNoTeaser': 5,
'botaoComentario': {'topo': '.listar-comentarios-topo'}
});
});
</script>
</div>
Который в этой строке задает количество комментариев
'qtdComentariosNoTeaser': 5,
- Я считаю, что есть много способов загрузить все комментарии, но я не смог найти никакого решения. Не могли бы вы, пожалуйста, кто-нибудь помочь мне?
2 ответа
Вы можете получить все элементы, соответствующие имени класса кнопки, и сохранить их в массиве. Затем вы можете напрямую ссылаться на индекс в массиве и нажимать. Возможно, это не лучший метод, но он нажимает кнопку. Надеюсь, поможет.
Javascript, чтобы нажать кнопку "Загрузить больше комментариев":
var arrEle = document.getElementsByClassName('glbComentarios-botao-mais');
arrEle[0].click();
Решение jQuery по запросу:
$(".glbComentarios-botao-mais").click();
Вы не сможете достичь того, что вам нужно, нажав кнопку. Есть "некоторые" скрытые комментарии, и если нажать кнопку один раз, вы обнаружите первоначальные скрытые комментарии, но дополнительные щелчки делают AJAX-вызов для загрузки большего количества комментариев, звонков:
3.json, 4.json и т. Д.
Вы пытались удалить строку 'qtdComentariosNoTeaser': 5,
или установить его на действительно большое число, например, 9999