Как спарсить только текст новости с разных сайтов simple_html_dom

168
18 марта 2018, 22:19

Всех приветствую!

Помогите пожалуйста разобраться со следующей задачей: Обрисую картину в целом: есть ресурс, в нём находиться список заголовков новостей в виде ссылок(ссылки ведут на разные новостные сайты) и каждая из этих ссылок ведёт на целую конкретную новость... ...как сделать так, чтобы парсился только текст новости с помощью simple_html_dom ?

Ссылки парсю так (обратите пжлста внимание на комментарии):

foreach($dom->find('div.central_ln_wrap div.newsfeed div.hl') as $element) {
$source_url = cur($element->find('a.hll',0)->href); // Переходим по ссылкам
$source_link = $source_url->find('a[rel]',0)->href; // чтобы забрать ссылку на источник
$text_article = cur($source_link); // сюда помещается ссылка на полную новость...
$text = $text_article->find('title',0)->plaintext; // ...а в эту переменную должен записываться полный текст новости....пока что записываю содержимое тега title)
$result[$element->attr['data-id']]=array(
            'flag' => $element->find('span[c]',0)->attr['c'],
            'title' => $element->find('a.hll',0)->plaintext,
    'source_link'=> $source_link,       
    'text' => $text // вот сюда нужно помещать полный текст статьи, которая лежит по ссылке 'source_link'=> $source_link
        );

}

результат парсинга ссылок:

[928871698] => Array
    (
        [flag] => US
        [title] => 65% of Americans save little or nothing—and half could struggle in retirement
        [source_link] => https://www.cnbc.com/2018/03/15/bankrate-65-percent-of-americans-save-little-or-nothing.html
        [text] => Bankrate: 65% of Americans save little or nothing
    )
[928871693] => Array
    (
        [flag] => CA
        [title] => Raw footage shows damage from Miami bridge collapse
        [source_link] => https://www.theglobeandmail.com/world/video-raw-footage-shows-damage-from-miami-bridge-collapse/
        [text] => Raw footage shows damage from Miami bridge collapse - The Globe and Mail
    )

PS: Безусловно, я бы попробовал парсить скажем по тегам "p", но дело в том, что у каждого источника(source_link) свои предпочтения-кто то использует параграфы а кто то теги div а самые ушлые вообще никаких тегов в тексте новости не используют...может как то можно сварганить условие, которое бы подсчитывало: если допустим больше одного предложения то парсить ну или типо того...вот ломаю голову и всё пока безрезультатно ((

Заранее благодарю за любую помощь!

Answer 1

Это довольно сложная тема, люди вокруг этого целые сервисы строят и/или встраивают это в браузер (read mode). Можно например использовать готовую библиотеку, например https://github.com/scotteh/php-goose (не работал, но это первое что находится). Возможно где-то есть и API сервисов, которым можно скормить ссылку и получить очищенный текст

READ ALSO
Шифрование QR code PHP

Шифрование QR code PHP

Задача такова: использую библиотеку PHP QR Code

151
Демоны на PHP. WebSocket

Демоны на PHP. WebSocket

Насколько PHP плох в этом и почему? Читал на разных форумах что PHP плохо справляется с WebSocket, мол часто падает сервер, большая нагрузка, плохая...

186
Soap php wsdl, как составить запросы?

Soap php wsdl, как составить запросы?

ПриветНе знаю правильно ли я вообще задаю вопрос, так как на тостере не помогли особо

143
Как перевернуть коллекцию моделей в php

Как перевернуть коллекцию моделей в php

Как перевернуть коллекцию моделей в php фреймворке laravel?

267