Извлечение комментариев Disqus с веб-страниц с помощью С#

Мне необходимо получать комментарии пользователей на каждой странице новостей на веб-сайте CNN, который использует disqus система комментариев. Я использовал c# для разбора html. Есть ли какой-либо конкретный код, который я могу использовать для извлечения прокомментированного автора и комментария с помощью c#.

Заранее спасибо, Динуша


person user2475467    schedule 11.06.2013    source источник
comment
У вас есть код, который вы пробовали сами? А если есть, не могли бы вы выложить?   -  person Edper    schedule 11.06.2013
comment
На данный момент у меня нет кода. Я слышал о DisqusSharp. Но я не смог найти ни одного примера, чтобы попробовать код.   -  person user2475467    schedule 11.06.2013


Ответы (1)


Поскольку встраивание Disqus является встраиванием javascript, комментарии не будут доступны в исходном коде страницы, если сайт не отобразит их там. Если вы очищаете страницу и позволяете рендерингу javascript, то первая страница (до 50 комментариев) доступна в iFrame Disqus в DIV «postCompatContainer».

Однако вместо этого я бы предложил использовать для этого Disqus API. В этом есть две основные части:

  1. Получить информацию о теме из статьи

В частности, в исходном коде страницы вы должны найти переменные «disqus_shortname» и «disqus_identifier» или «disqus_url». Если «disqus_identifier» или «disqus_url» недоступны, вы можете попробовать использовать адрес расположения окна, но это менее надежно.

  1. Выполните вызов API с этими данными.

В частности, вы можете использовать нашу конечную точку threads/listPosts, передавая 'disqus_shortname' как «форум» и идентификатор или URL как «thread=ident:» или «thread=link:» соответственно.

Я не буду вдаваться здесь в подробности использования API, но у нас есть хорошее руководство для начинающих: http://help.disqus.com/customer/portal/articles/1131783-tutorial-get-числокомментариевсAPI

и другие примеры здесь: https://github.com/disqus/DISQUS-API-Recipes

person Ryan V    schedule 11.06.2013
comment
Привет, Райан! Большое спасибо за ответ. Я очень новичок в этом API. Можем ли мы использовать DisqusSharp для этой цели? Если возможно, предоставьте небольшой пример кода на С#. Так что я могу начать свой код с него. - person user2475467; 12.06.2013
comment
DisqusSharp выглядит неподдерживаемым и все равно использует наш старый API. Это пример C#, который работает в Windows Phone, поэтому вам может потребоваться его немного изменить: gist. github.com/ryanvalentin/5767814 - person Ryan V; 12.06.2013
comment
Привет, Райан! Большое спасибо за пример кода. Я могу начать свой код с этого. Я разработал приложение Windows Form для извлечения новостных статей и комментариев. Мне необходимо извлечь комментарии с нескольких сайтов помимо CNN. При получении ключа API, что я должен указать для информации «Веб-сайт» (сайт вашего приложения) в форме заявки? Должен ли я получать отдельные ключи для всех сайтов, к которым я обращаюсь? - person user2475467; 13.06.2013
comment
Это поле предназначено только для маркировки, поэтому вы можете указать все, что хотите. Если вы планируете использовать какие-либо сценарии на стороне клиента, вам нужно разместить домен ниже, но в противном случае вы просто будете использовать секретный ключ для запросов на стороне сервера. - person Ryan V; 13.06.2013
comment
Привет, Райан, мне удалось извлечь информацию о комментариях, изменив ваш код в соответствии с моим требованием. Большое спасибо за образец кода. Я столкнулся с одной проблемой. Есть URL-адреса статей, которые состоят из '(например:nation.lk/edition/international/item/…). Для таких URL-адресов, когда я использую их как [thread= link:url], я получаю следующую ошибку через API. {code: 2, response: Invalid arguments, 'thread': Unable to find thread…} Я даже пробовал кодировать URL, но это не сработало. Пожалуйста посоветуй. - person user2475467; 15.06.2013
comment
Это означает, что поток, показанный по этому URL-адресу, не был сохранен в Disqus с тем же URL-адресом. Для этого есть много причин (CNN может выбрать другой URL-адрес ссылки), но ни одна из них на самом деле не находится под вашим контролем. Большинство сайтов используют 'disqus_identifier', поэтому проверьте его в источнике страницы и запросите с помощью [thread=ident:...], если он доступен. - person Ryan V; 17.06.2013