как вернуть список URL из приведенной ниже кодировки - PullRequest
0 голосов
/ 28 февраля 2011

как видно из заголовка, как вернуть список URL-адресов по ссылке (href) и отобразить в текстовом файле? Код ниже возвращает HTML форму веб-сайта.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class Main {
    public static void main(String[] args)  {
        try {
            URL my_url = new URL("http://www.placeofjo.blogspot.com/");
            BufferedReader br = new BufferedReader(
               new InputStreamReader(my_url.openStream()));
            String strTemp = "";
            while(null != (strTemp = br.readLine())){
                System.out.println(strTemp);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Похоже, вы хотите использовать библиотеку HTML для разбора, например HtmlUnit , вместо того, чтобы ломать голову над самостоятельным анализом HTML. Код HtmlUnit будет таким простым:

final WebClient webClient = new WebClient();
webClient.setJavaScriptEnabled(false);
final HtmlPage page = webClient.getPage("http://www.placeofjo.blogspot.com/");

//  Then iterate through
for (DomElement element : page.getElementsByTagName("a")){
    String link = ((HtmlAnchor)element).getHrefAttribute();
    System.out.println(link);
}

Дает вывод:

http://www.twitter.com/jozefinfin/
http://www.facebook.com/jozefinfin/
http://placeofjo.blogspot.com/2008_08_01_archive.html
... etc etc
http://placeofjo.blogspot.com/2011_02_01_archive.html
http://endlessdance.blogspot.com
http://blogskins.com/me/aaaaaa
http://weheartit.com
1 голос
/ 28 февраля 2011

Возможно, вы захотите попытаться проанализировать HTML с помощью jsoup и собрать все теги привязки со страницы.

0 голосов
/ 28 февраля 2011

Редактировать (2)

Если вы ищете надежное решение (или вам может потребоваться расширение для анализа большего количества HTML), то посмотрите один из других ответов здесь.Если вы просто хотите быстро и грязно, одноразовое решение, которое вы могли бы рассмотреть регулярное выражение.


Если я вас правильно понимаю, вы хотите извлечь значения href для всех тегов <a> вHTML, который вы извлекаете.

Вы можете использовать регулярные выражения .Что-то вроде

String regex = "<a\s.*href=['\"](.*?)['\"].*?>";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while (m.find())
{
    String urlStr = m.group();
}

Edit (1)

Исправлено регулярное выражение - нам нужны неохотные квантификаторы, в противном случае мы получим все!

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