ExpandПоследние новости

ExpandПопулярное

ExpandВажно!

Уважаемые пользователи! На сайте представлены материалы по компоненту NewsGrabberJC для Joomla и скрипту NewsGrabber.

Пожалуйста, не путайте эти 2 понятия!!!


Получение контента без RSS/ATOM лент
Написал Administrator   
11.10.2007
Получение контента без RSS/ATOM лент

Не всегда на сайте-источнике можно встретить ленты в формате RSS/ATOM. Поэтому мы добавили в NewsGrabber возможность получения заголовков и ссылок на полный текст с обычных HTML страниц.

Возьмем для примера тот же Reuters и раздел Top News [ http://today.reuters.com/news/newschannel.aspx?type=topNews ] Обрабатываем блок обведенный на рисунке красным



Итак вводная. Шаблон для HTML ленты пишется в окне Шаблон заголовков. При написании шаблона используются следующие операторы:

{skip} - часть кода не учитывается
{title} - вставляется в место где в коде идет заголовок
{description} - вставляется в место где в коде идет описание (необязательный оператор)
{link} - вставляется в место где в коде идет ссылка на полную публикацию

Все операторы кроме оператора {skip} используются только один раз.

Итак... Если мы в шаблоне для парсинга полного текста ограничивали наш шаблон уникальными конструкциями кода, то здесь все немного посложнее.

Для начала выделим кусок кода который описывает наши заголовки:

Код:
<table>
<tr>
   <td id="NewsChannelContainer1_DataCell">
      <div class="lgHeadline"><a id="NewsChannelContainer1_MainStoryHeadline" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" target="_top">World powers set to discuss Iran nuclear offer</a></div>
      <div class="newsDate">Wed May 24, 2006 1:38 AM ET</div>
      <a href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml"><img align='' border='0' class="medPicBorder" onmouseover="this.className='medPicBorderOn';" onmouseout="this.className='medPicBorder';" src='http://i.today.reuters.com/misc/genImage.aspx?uri=2006-05-24T053758Z_01_L13443169_RTRUKOP_2_PICTURE0.jpg&resize=main' alt=''></a></a>
      
      <p>LONDON (Reuters) - World powers meet in London on Wednesday to discuss a package of incentives and threats drafted by European countries aimed at defusing a crisis over Iran's nuclear program.
      <a id="NewsChannelContainer1_MainArticleLink" class="fs" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" target="_top"><b>Full Article</b></a>

      <br clear=all>

      
            <div class="medHeadline"><a id="NewsChannelContainer1_channelStories__ctl0_StoryHeadline" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml">British police arrest eight in anti-terror raids</a></div>
            <div class="newsDate">Wed May 24, 2006 3:07 AM ET</div>
            <a href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml"><img align='left' border='0' class="medPicBorder" onmouseover="this.className='medPicBorderOn';" onmouseout="this.className='medPicBorder';" src='http://i.today.reuters.com/misc/genImage.aspx?uri=2006-05-24T075847Z_01_L24401121_RTRUKOP_1_PICTURE0.jpg&resize=small' alt=''></a></a>
            
            LONDON (Reuters) - British police arrested eight people on Wednesday in a major anti-terror operation involving 500 officers across the country.
            <a id="NewsChannelContainer1_channelStories__ctl0_FullStory" class="fs" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml"><b>Full Article</b></a>
            <br clear=all>
         
            <div class="medHeadline"><a id="NewsChannelContainer1_channelStories__ctl1_StoryHeadline" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T074520Z_01_DAH424520_RTRUKOC_0_US-IRAQ-SADDAM.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T074520Z_01_DAH424520_RTRUKOC_0_US-IRAQ-SADDAM.xml">Saddam trial resumes, defense case to continue</a></div>
            <div class="newsDate">Wed May 24, 2006 3:33 AM ET</div>
            <a href="newsArticle.aspx?type=topNews&storyID=2006-05-24T074520Z_01_DAH424520_RTRUKOC_0_US-IRAQ-SADDAM.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T074520Z_01_DAH424520_RTRUKOC_0_US-IRAQ-SADDAM.xml"><img align='left' border='0' class="medPicBorder" onmouseover="this.className='medPicBorderOn';" onmouseout="this.className='medPicBorder';" src='http://i.today.reuters.com/misc/genImage.aspx?uri=2006-05-24T074517Z_01_DAH424520_RTRUKOP_1_PICTURE0.jpg&resize=small' alt=''></a></a>
            
            BAGHDAD (Reuters) - The trial of Saddam Hussein and seven others charged with crimes against humanity resumed in Baghdad on Wednesday, with former Deputy Prime Minister Tareq Aziz taking the stand for the ousted president.
            <a id="NewsChannelContainer1_channelStories__ctl1_FullStory" class="fs" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T074520Z_01_DAH424520_RTRUKOC_0_US-IRAQ-SADDAM.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T074520Z_01_DAH424520_RTRUKOC_0_US-IRAQ-SADDAM.xml"><b>Full Article</b></a>
            <br clear=all>
         
   </td>

</tr>
</table>


Из этого кода нам необходимо выделить все блоки новостей, которые имеют одинаковый код в начале блока и в конце блока. Получим:

Код:
1-я новость

      <a id="NewsChannelContainer1_MainStoryHeadline" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" target="_top">World powers set to discuss Iran nuclear offer</a></div>
      <div class="newsDate">Wed May 24, 2006 1:38 AM ET</div>
      <a href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml"><img align='' border='0' class="medPicBorder" onmouseover="this.className='medPicBorderOn';" onmouseout="this.className='medPicBorder';" src='http://i.today.reuters.com/misc/genImage.aspx?uri=2006-05-24T053758Z_01_L13443169_RTRUKOP_2_PICTURE0.jpg&resize=main' alt=''></a></a>
      
      <p>LONDON (Reuters) - World powers meet in London on Wednesday to discuss a package of incentives and threats drafted by European countries aimed at defusing a crisis over Iran's nuclear program.
      <a id="NewsChannelContainer1_MainArticleLink" class="fs" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T053803Z_01_L13443169_RTRUKOC_0_US-NUCLEAR-IRAN.xml" target="_top"><b>Full Article</b></a>


Код:
2-я новость

            <a id="NewsChannelContainer1_channelStories__ctl0_StoryHeadline" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml">British police arrest eight in anti-terror raids</a></div>
            <div class="newsDate">Wed May 24, 2006 3:07 AM ET</div>
            <a href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml"><img align='left' border='0' class="medPicBorder" onmouseover="this.className='medPicBorderOn';" onmouseout="this.className='medPicBorder';" src='http://i.today.reuters.com/misc/genImage.aspx?uri=2006-05-24T075847Z_01_L24401121_RTRUKOP_1_PICTURE0.jpg&resize=small' alt=''></a></a>
            
            LONDON (Reuters) - British police arrested eight people on Wednesday in a major anti-terror operation involving 500 officers across the country.
            <a id="NewsChannelContainer1_channelStories__ctl0_FullStory" class="fs" href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml" mce_href="newsArticle.aspx?type=topNews&storyID=2006-05-24T075851Z_01_L24401121_RTRUKOC_0_US-SECURITY-BRITAIN.xml"><b>Full Article</b></a>


3-я новость имеет структуру кода аналогичную 2-й новости, поэтому ее мы не рассматриваем.

Подставляем в блоки все необходимые нам элементы. Получаем:

Код:
1-я новость

      <a id="NewsChannelContainer1_MainStoryHeadline" href="{link}" mce_href="{link}" target="_top">{title}</a></div>
      <div class="newsDate">{skip}</div>
{skip}) -{description}<a id="NewsChannelContainer1_MainArticleLink" class="fs" href="{skip}" mce_href="{skip}" target="_top"><b>Full Article</b></a>


Код:
2-я новость

            <a id="NewsChannelContainer1_channelStories__ctl0_StoryHeadline" href="{link}" mce_href="{link}">{title}</a></div>
            <div class="newsDate">{skip}</div>
{skip}
) -{description}<a id="NewsChannelContainer1_channelStories__ctl0_FullStory" class="fs" href="{skip}" mce_href="{skip}"><b>Full Article</b></a>


Ищем отличия в получившихся блоках, эти отличия встречаются в классах, ID, а также в добавлении атрибута target="_top". Заменяем отличающиеся строки оператором {skip} и получаем такой шаблон:

Код:
<a id="NewsChannelContainer1{skip}" href="{skip}" mce_href="{skip}"{skip}>{title}</a></div>
<div class="newsDate">{skip}</div>
{skip}            
) -{description}<a id="NewsChannelContainer1{skip}" class="fs" href="{skip}" mce_href="{skip}"{skip}><b>Full Article</b></a>


Этот шаблон обработает все новости с учетом различий в их коде.

Надо учесть что, начало и конец такого блока должны быть уникальны для всего HTML кода страницы. Т.е. код <a id="NewsChannelContainer1 и код <b>Full Article</b></a> Должны встречаться только в местах где описываются наши заголовки
 
< Пред.   След. >