Как получить определенную строку текста по ссылке в java? - PullRequest
0 голосов
/ 04 августа 2020

Можно ли захватить определенный фрагмент текста через Java на веб-сайте? например, https://weather.com/weather/today/l/41.93, - 88,25? par = google & temp = f , как я смогу определить температуру, отображаемую в java?

1 Ответ

0 голосов
/ 04 августа 2020

Практический ответ на ваш вопрос: вы не хотите этого делать.

Позвольте мне попытаться ответить на него, и тогда вы поймете, почему вы не хотите:

Как мне программно разобрать сайт?

Это сложно. Практически в каждом браузере есть возможность щелкнуть правой кнопкой мыши и «просмотреть исходный код». Предположительно здесь находятся нужные вам числа; вы можете проанализировать этот текст, чтобы найти их. Это НЕ просто. У вас, вероятно, возникнет соблазн использовать что-то вроде регулярного выражения или простой трюк «найди мне эту точную строку текста», чтобы найти то, что вам нужно. Это может сработать. Но, как правило, это означает, что в тот день, когда этот сайт изменит стиль или просто сделает некоторые базовые c обновления, ваш код перестанет работать.

Вам нужно будет каждый день проверять свою повестку дня, если вы должны, если ваш код все еще работает. Это 5 минут вашего дня каждый день до конца жизни этого проекта. Это звучит невероятно дорого, поэтому вам не нужно это .

Если необходимо, есть способы ужесточить код синтаксического анализа. Если вы используете такие библиотеки, как jsoup , это немного помогает. Если вы пропустите весь сайт через «эмулятор браузера», вы сможете справиться с javascript запросами ajax и т.п. (в наши дни веб-сайты похожи на маленькие программы, и чтобы действительно программно наблюдать то, что сайт показывает человеческим глазам, вам нужно запустить эту программу, чтобы выполнить работу. Если вам очень повезет, вы можете проверить «исходный код» маленькой программы, и это все, что вам нужно, но вам не всегда везет).

Но, как я уже сказал, это помогает немного . Придет день, когда погодный канал изменит свой сайт и сломает ваш код. Они этого не объявят. Это не считается аморальным или технически сомнительным. Возможно, вы можете обновить свой план, чтобы проверить, работает ли ваш код до одного раза в неделю, а не ежедневно, но это будет постоянное бремя обслуживания. ЭТО НЕ ХОЧЕШЬ .

Хорошо, забудьте об этом. Как это на самом деле работает?

Сайты, которые позволяют вам читать эти материалы, имеют API. Они где-нибудь это задокументируют. Это «веб-сайт», созданный специально для кода. У него нет форматирования и четко определенная спецификация. Отправьте ему эту конкретную c простую строку, и появится этот конкретный c простой ответ, и на сайте есть инструменты, чтобы вы знали, когда они его изменяют (например, «версия API») - все, что сайт имел в виду для потребления человеком не придется.

Вам повезло. Канал погоды имеет API .

Что вам действительно нужно, так это прочитать все это, выяснить, как работает этот API, и использовать его.

API будет не ломаться, когда погодный канал решает, что сегодня хороший день, чтобы немного изменить оттенок фонового изображения.

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