2012-07-24 15 views
9

Nie wiem, jak to zdefiniować, ale zasadniczo chcę pobrać odpowiednie podsumowanie obrazu i tekstu z podanego adresu URL.Pobierz odpowiedni obraz i podsumowanie z adresu URL

Na przykład - gdy użytkownik wklei łącze do pola udostępniania na Facebooku, natychmiast otrzymuje tytuł artykułu i/lub krótki blok tekstu z samego artykułu i odpowiedniego obrazu. Nigdy nie otrzymuje złego obrazu, takiego jak logo witryny lub tekst z samego artykułu ...

To samo dotyczy Google+ i innych sieci społecznościowych lub usług takich jak te.

Zacząłem od założenia, że ​​muszę przeczytać treść strony za pomocą poniższego kodu, jak ustalić, który obraz jest odpowiedni (z treści artykułu) i który tekst jest tekstem artykułu?

URL oracle = new URL("http://www.oracle.com/"); 
BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream())); 

String inputLine; 
while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine); 

in.close(); 

Jestem oczywiście nie pytając o kod tutaj (chyba, że ​​ktoś ma na przykład fragment i jest gotów dzielić), ale bardziej dla jak nawet podejść do tego ... gdzie mam zacząć?

Każda pomoc zostanie doceniona!

+1

Być może pomoże Ci http://stackoverflow.com/questions/5482897/extract-information-od-link-like-facebook-wall – logcat

+0

Dzięki, zajmie się tym, ale wydaje się raczej ograniczony. Zakładam, że jest bardziej ogólny sposób, niż robi to Facebook. –

+0

Witam liorry, czy udało ci się to zrobić w międzyczasie? Naprawdę doceniam aktualizację tego tematu. Dzięki! – Cos

Odpowiedz

9

Mogę polecić Boilerpipe do ekstrakcji tekstu surowego, wykorzystuje zaawansowane algorytmy, aby znaleźć odpowiedni tekst i usunąć otaczający go szablon (np. Menu, stopki itp.).

Odnośnie obrazu, oprócz użycia metatagów, jak już sugerowano w komentarzach, można użyć parsera html (np. htmlparser), aby wyodrębnić wszystkie znaczniki "img", a następnie użyć heurystyki do wybrania najlepszego. Używam pewne heurystyki jak:

  • Brak obrazu mniejszy niż 30px, są one zazwyczaj ikony lub obrazy śledzenia reklam
  • kwadratu, tym lepiej, to unika władców i podobne rzeczy
  • Nie wiadomo rozmiar standardowy banner
  • wyższy na stronie, tym lepiej
  • pobliżu treść ekstrahowano boilerplate (jest to trudne)

Byłem przy użyciu heurystyki w produkcji do skrobania stron przez pewien czas i dają dobre wyniki.

Aby jednak poprawnie zastosować te reguły, konieczne może być pobranie obrazów, aby uzyskać ich rozmiar i/lub atrybuty stylu analizy.

Jeśli planujesz uruchomić tę stronę serwera, jako usługę skrobania strony, to jest w porządku. Jeśli planujesz zrobić to w locie na urządzeniu z Androidem, może to być zbyt ciężkie.

+0

dziękuję za szczegółową odpowiedź. Ta informacja jest dla mnie świetnym początkiem. Zastanawiam się nad aplikacją Google+ na Androida, która wydaje się pobierać obrazy i informacje o postach z linkami ... ale może robią to po stronie serwera ... szkoda, że ​​jest zaciemniona i nie jest otwierana z zewnątrz :) –

Powiązane problemy