Как получить мета-страницу (название, описание, изображения), например, facebook attach url с помощью Regex в java

Как получить мета-страницу (название, описание, изображения), например, facebook attach url, используя Regex в .java

Ответ 1

Вот фрагмент, который читает веб-страницу и создает небольшой фрагмент HTML, который отображает изображение Open Graph, а Title - в правую обертку вокруг изображения. Он возвращается к использованию только заголовка html, если отсутствуют теги OG, поэтому он может работать для представления всех веб-страниц.

public static String parsePageHeaderInfo(String urlStr) throws Exception {

    StringBuilder sb = new StringBuilder();
    Connection con = Jsoup.connect(urlStr);

    /* this browseragant thing is important to trick servers into sending us the LARGEST versions of the images */
    con.userAgent(Constants.BROWSER_USER_AGENT);
    Document doc = con.get();

    String text = null;
    Elements metaOgTitle = doc.select("meta[property=og:title]");
    if (metaOgTitle!=null) {
        text = metaOgTitle.attr("content");
    }
    else {
        text = doc.title();
    }

    String imageUrl = null;
    Elements metaOgImage = doc.select("meta[property=og:image]");
    if (metaOgImage!=null) {
        imageUrl = metaOgImage.attr("content");
    }

    if (imageUrl!=null) {
        sb.append("<img src='");
        sb.append(imageUrl);
        sb.append("' align='left' hspace='12' vspace='12' width='150px'>");
    }

    if (text!=null) {
        sb.append(text);
    }

    return sb.toString();       
}

Ответ 2

Как упоминал Исикава Йоши, используйте JSoup

Пример:

Document doc = Jsoup.connect("http://example.com/").get()
for(Element meta : doc.select("meta")) {
    System.out.println("Name: " + meta.attr("name") + " - Content: " + meta.attr("content"));
}

Этот код не проверен, надеюсь, это поможет.

Использование RegEx для очистки документа - плохая идея, об этом читайте в Coding Horror

Ответ 3

Как насчет этого? Ниже оператора разбор всех тегов начинается с "og:". Это полезно.

doc.select( "мета [свойство ^ = OG:]" )

void parseOGTag(String response) {
    // Parse og tags
    Document doc = Jsoup.parse(response);
    Elements ogTags = doc.select("meta[property^=og:]");
    if (ogTags.size() <= 0) {
        return;
    }

    // Set OGTags you want
    String title;
    String desc;
    String image;
    for (int i = 0; i < ogTags.size(); i++) {
        Element tag = ogTags.get(i);

        String text = tag.attr("property");
        if ("og:image".equals(text)) {
            image = tag.attr("content");
        } else if ("og:description".equals(text)) {
            desc = tag.attr("content");
        } else if ("og:title".equals(text)) {
            title = tag.attr("content");
        }
    }                    
}

Ответ 4

Я советую вам эту ссылку jsoup.org, если вы еще не решили свою проблему, вы можете посмотреть здесь есть примеры того, как решить вашу проблему с помощью jsoup.
И здесь.

Ответ 5

Я использую JSOUP для получения объекта Document, а затем использую что-то похожее на метод ниже, чтобы получить теги для каждого свойства, которое я ищу.

String findTag(Document document, String property) {
    String tag = null;
    String cssQuery = "meta[property='og:" + property + "']";
    Elements elements = document.select(cssQuery);

    if (elements != null && elements.size() >= 1) {
        tag = elements.first().attr("content");
    }
    return tag;
}

Я использовал это достаточно часто там, где я решил объединить выборку (с JSOUP) и синтаксический анализ вместе в библиотеку под названием ogmapper.