CoderCastrov logo
CoderCastrov
Разработка веб-сайтов

Извлечение новостей с использованием веб-парсера в MATLAB

Извлечение новостей с использованием веб-парсера в MATLAB
просмотров
3 мин чтение
#Разработка веб-сайтов
Table Of Content

    Через эту статью я хочу объяснить, как легко можно извлечь новости или что-либо еще с веб-сайта, используя MATLAB. Всего несколько строк кода, вот в чем красота MATLAB. То, что мне нравится в MATLAB, это то, что вы можете делать практически все с его помощью: моделирование, симуляция, машинное обучение, анализ данных...

    Для демонстрации парсинга новостей я выбрал веб-сайт indiatoday. Первый шаг - извлечь исходный код веб-страницы. Это то же самое, что и опция "просмотр исходного кода" на веб-странице.

    html = webread('https://www.indiatoday.in/top-stories');

    Вышеуказанный код разберет HTML-код веб-страницы. Следующий шаг - определить шаблон, между которыми находятся заголовки новостей. Теперь приходит самый важный шаг - определение шаблонов кода в HTML, где находятся заголовки новостей. Очевидно, что это будет различаться для разных веб-сайтов. Функция extractBetween(Html, pattern1, pattern2) идентифицирует в тексте Html все вхождения строк, которые находятся между pattern1 и pattern2. Например, если HTML = "парсинг веб-страницы легок, если у нас есть терпение и острый ум для определения шаблонов. Эта статья, доступная в Интернете, действительно легка в понимании". Пусть pattern1 = 'веб' и pattern2 = 'легок'. Функция вернет список, состоящий из двух элементов: "парсинг страницы" и "действительно".

    Вернемся к рассматриваемому веб-сайту. Шаблоны, которые я нашел, были '<h3 class="" title=**' и '**</a>``</h3>``<p>'.

    list = extractBetween(html,'<h3 class="" title=','</a></h3><p>');

    Все заголовки находились между этими двумя шаблонами. Позвольте мне показать вам первое вхождение в списке.

    "India may continue to import oil from Iran, says Petroleum Minister"><a href="_/india/story/india-may-continue-to-import-oil-from-iran-says-petroleum-minister-1359049–2018–10–09_">India may continue to import oil from Iran, says Petroleum Minister

    Но помимо заголовка, между шаблонами также присутствуют другие фрагменты кода, как вы можете видеть выше. Поэтому теперь мы применим другую функцию, но уже не к HTML, а к списку, который вернула функция extractBetween.

    list2=extractAfter(list,'<a href="');

    Функция extractAfter требует только одного шаблона и возвращает все вхождения строк, которые следуют после этого шаблона. В приведенном мной примере, если я использую шаблон 'доступно на', он вернет "Интернете это действительно легко понять". Результат вышеуказанной строки для первого вхождения:

    "/india/story/india-may-continue-to-import-oil-from-iran-says-petroleum-minister-1359049–2018–10–09">India may continue to import oil from Iran, says Petroleum Minister

    Остался всего один фрагмент кода, и мы будем готовы со своими заголовками новостей!

    list3 = extractAfter(list2,'">');

    Результат этой строки кода:

    India may continue to import oil from Iran, says Petroleum Minister

    Вот окончательные заголовки новостей:

    "India may continue to import oil from Iran, says Petroleum Minister""How a Noida student became British High Commissioner to India for a day""Goa MLA’s son mows down 20-year-old girl on Goa-Belgaum highway" "IMF projects 7.3% growth for India in 2018" "2018: A year of mystery disappearances and audacious assassinations""Shiv Sena demands triple talaq-like ordinance for Ram Mandir construction" "Fadnavis says announcement on drought in Maharashtra by October 31" "AAP, BJP in war of words over funds for Delhi sanitation workers" "Indiscipline not tolerated, says UP DGP on cops supporting accused in Vivek Tiwari murder" "Gujarat CM hits out at Rahul Gandhi, blames Congress for inciting attacks on migrants"

    Некоторые острые умы могут спросить меня, почему я сразу не использовал это?

    list = extractBetween(html,'">','</a></h3><p>');

    Причина в том, что никогда не следует использовать такие маленькие шаблоны. Ищите более крупные, потому что маленькие могут присутствовать в других местах, кроме места, где вы ищете, и могут привести к неправильным результатам.

    За уточнениями/предложениями оставьте комментарий здесь или свяжитесь со мной в LinkedIn.