2010-06-03 3 views
3

FB가 페이스 북 (상태, 메시지 등)에 게시하는 링크를 링크 필드에 붙여넣고 다양한 메타 데이터, 이미지의 엄지 손가락 , 페이지 링크의 다양한 이미지 또는 동영상 관련 링크 (예 : youtube)의 비디오 엄지 손가락.Facebook은 주문형 메타 콘텐츠 스크래퍼를 좋아합니다

어떻게이 기능을 복사하나요? 나는 커플 기어 노동자 또는 더 나은 그냥 자바 스크립트 xhr 요청을 수행하고 정규식이나 비슷한 내용을 기반으로 구문 분석에 대해 생각하고있어 ... 어떤 아이디어? 어떤 링크? 누군가 이미 이미 똑같은 것을 시도해 보았고 그것을 멋진 수업에 포장 했습니까? 아무것도? :)

감사합니다!

+0

심각하게 ...? 아무도? ;) – Tobias

+1

이와 같은 모든 작업은 사용자가 긁어 모으는 각 사이트에 대해 맞춤 작성 도구가 필요합니다. 'RegEx'를 피하고 대신'DOM'을 사용하십시오. 실제 웹 페이지를 긁기 전에 사이트에서 원시 데이터 피드를 찾으십시오. 원시 데이터를 찾을 수 없으면 서버에 저장된 정적 파일로 테스트하는 것이 좋습니다. – drudge

+0

그렇게 생각하지 않습니다. 나는 이미 fb 스크레이퍼와 동일한 출력을 생성하는 aworking 프로토 타입을 가지고있다. 단지 문제는 scalibilty이다 ... – Tobias

답변

14

FB는 HTML에서 메타 태그를 긁습니다.

e.e. URL을 입력하면 FB에서 페이지 제목과 URL (잘 렸음)을 차례로 표시 한 다음 < 메타 이름 = "설명"> 요소의 내용을 표시합니다.

축소판의 선택에 관해서는, 나는 아마 FB는 버튼 그래픽, 1 개 픽셀의 스페이서 등을 스킵 특정 크기를 초과하는 사람들, 즉 선택 생각

편집 : 나는 정확히하는지 모르겠 찾고 있지만, 여기에 페이지에서 관련 데이터를 긁어 모으기위한 PHP의 함수가 있습니다.
이것은 http://simplehtmldom.sourceforge.net/ 내가 FB 그것을 수행 방법에 대해 살펴 했어

에서 간단한 HTML DOM 라이브러리를 사용하고, 스크래핑 서버 측에서 수행되는 것 같습니다.

 

    class ScrapedInfo 
    { 
     public $url; 
     public $title; 
     public $description; 
     public $imageUrls; 
    } 

    function scrapeUrl($url) 
    { 
     $info = new ScrapedInfo(); 
     $info->url = $url; 
     $html = file_get_html($info->url); 

     //Grab the page title 
     $info->title = trim($html->find('title', 0)->plaintext); 

     //Grab the page description 
     foreach($html->find('meta') as $meta) 
       if ($meta->name == "description") 
         $info->description = trim($meta->content); 

     //Grab the image URLs 
     $imgArr = array(); 
     foreach($html->find('img') as $element) 
     { 
       $rawUrl = $element->src; 

       //Turn any relative Urls into absolutes 
       if (substr($rawUrl,0,4)!="http") 
         $imgArr[] = $url.$rawUrl; 
       else 
         $imgArr[] = $rawUrl; 
     } 
     $info->imageUrls = $imgArr; 

     return $info; 
    } 

+0

현상금에 대한 기준은 무엇입니까? – stevenroberts

+0

그럼 당신은 당신의 대답에 노력을 기울여야합니다. 그러면 현상금을 얻으십시오 – TheLQ

+0

그의 요점은 대답이 받아 들일 수있는 기준을 모르는 사람들이 어떻게 답할 수 있습니까? –

0

Facebook은 링크 필드에 붙여 넣은 페이지의 HTML에서 다양한 메타 정보를 봅니다. titledescription은 두 가지 분명한 사항이지만 개발자는 <link rel="image_src" href="thumbnail.jpg" />을 사용하여 선호하는 screengrab를 제공 할 수도 있습니다. 이걸 확인해 볼 수있을 것 같아. 이 태그가없는 경우 항상 website thumbnail generation 서비스를 사용할 수 있습니다.

+0

오, 정말로) - 나는 질량 데이터 crowling의 측면에서 더 많은 것을 의미했다. 또한 그들은 스크린 샷이 아닌 페이지 내에서 사진을 사용합니다. – Tobias

+0

스크린 샷이 토비 아스라고 생각하십니까? 그것은 * 사진입니다! –

+0

페이지에서 모든 이미지를 수집하고 하나를 미리보기 축소판으로 선택했습니다. 그들은 페이지의 스크린 샷을 생성하지 않습니다. 그것은 페이지의 임의의 그림입니다. – Tobias

0

나는 그런 프로젝트를 개발하고로서, 그것이 보인다만큼 쉽지 않다, 인코딩 문제는 자바 스크립트와 내용을 렌더링, 많은 비 의미 론적 웹 사이트의 존재는 I가 발생 큰 문제 중 하나입니다. 특히 비디오 정보를 추출하고 자동 재생 동작을 얻으려고하면 항상 까다 롭거나 때로는 불가능합니다. 당신은 http://www.embedify.me에서 데모를 볼 수 있습니다. 그것은 .net로 작성되었지만 서비스 인터페이스를 가지고 있기 때문에 자바 스크립트를 통해 호출 할 수 있습니다. 또한 javascript API로 fb와 동일한 UI/동작을 얻을 수 있습니다.

관련 문제