Разбор сайта и получение нужной мне информации - PullRequest
0 голосов
/ 14 января 2010

привет, поэтому мне нужно получить URL для первой статьи по запросу, которое я ищу на nytimes.com

Так что, если я ищу Apple. Эта ссылка вернет результат

http://query.nytimes.com/search/sitesearch?query=Apple&srchst=cse

И вы просто заменяете Apple на искомый термин.

Если вы перейдете по этой ссылке, вы увидите, что NYtimes спросит вас, имеете ли вы в виду Apple Inc.

Я хочу получить URL этой ссылки и перейти по ней.

Тогда вы просто получите много информации об Apple Inc.

Если вы прокрутите вниз, вы увидите статьи, связанные с Apple.

Итак, что мне в конечном итоге нужно, так это URL первой статьи на этой странице.

Так что я действительно не знаю, как это сделать. Я использую Java, или что я использую? Любая помощь будет принята с благодарностью, и я вознагражу ее за это позже, но мне нужен ответ как можно скорее.

Спасибо

РЕДАКТИРОВАТЬ: Можем ли мы сделать это на Java?

Ответы [ 3 ]

1 голос
/ 14 января 2010

Вы можете использовать Python со стандартным модулем urllib для извлечения страниц и великолепный анализатор HTML BeautifulSoup для получения необходимой информации со страниц.

Из документации BeautifulSoup приведен пример кода, который извлекает веб-страницу и извлекает из нее некоторую информацию:

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen("http://www.icc-ccs.org/prc/piracyreport.php")
soup = BeautifulSoup(page)
for incident in soup('td', width="90%"):
    where, linebreak, what = incident.contents[:3]
    print where.strip()
    print what.strip()
    print

Это Это хорошая и подробная статья по теме.

0 голосов
/ 14 января 2010

Вы, конечно, можете сделать это на Java. Посмотрите на класс HttpURLConnection. По сути, вы даете ему URL, вызываете функцию connect и получаете поток ввода с содержимым страницы, т. Е. HTML-текстом. Затем вы можете обработать это и проанализировать любую информацию, которую хотите.

Вы столкнулись с двумя проблемами в проекте, который вы описываете. Первая, и, возможно, действительно менее сложная задача, - это выяснить механизм подключения к веб-странице и получения текста в вашей программе. Вторая и, вероятно, более сложная задача - выяснить, как именно извлечь нужную информацию из этого текста. Я не совсем понимаю детали ваших требований, но вам придется разобраться с кучей текста, чтобы найти то, что вы ищете. На самом деле, не глядя на сайт NY Times, я уверен, что на нем есть все виды украшений, такие как красивые картинки, логотип компании, заголовки и так далее, а затем будут меню, реклама и все виды вещей. , Я искренне сомневаюсь, что NY Times или почти любой другой коммерческий веб-сайт вернет страницу поиска, на которой нет ничего, кроме ссылки на интересующую вас статью. Каким-то образом вашей программе придется выяснить, что первая ссылка на страница «подписаться на линии», вторая - для рекламы, третья - для обслуживания клиентов, четвертая и пятая - для дополнительной рекламы, шестая - для домашней страницы и т. д., и т. д. интересует. Как вы найдете интересную ссылку? Возможно, существуют заголовки или форматирование, которые делают его узнаваемым для человека, но вы используете большую интуицию, чтобы отсеять беспорядок, который может быть трудно воспроизвести в программе.

Удачи!

0 голосов
/ 14 января 2010

Вы можете сделать это в C #, используя HTML Agility Pack или используя LINQ to XML, если сайт действителен XHTML . РЕДАКТИРОВАТЬ : Недопустимо XHTML; Я проверил.

Следующий (проверенный) код получит URL первого результата поиска:

var doc = new HtmlWeb().Load(@"http://query.nytimes.com/search/sitesearch?query=Apple&srchst=cse");
var url = HtmlEntity.DeEntitize(doc.DocumentNode.Descendants("ul")
                                 .First(ul => ul.Attributes["class"] != null 
                                           && ul.Attributes["class"].Value == "results")
                                 .Descendants("a")
                                 .First()
                                 .Attributes["href"].Value);

Обратите внимание, что если их сайт изменится, этот код может перестать работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...