날짜를 반복해서 부여한 후 API를 공개하지 못했기 때문에 문제를 직접 해결하기로 결정했습니다. 이것이 이상적인 방법은 아니지만 지금은 작동합니다. 가장 인기있는 페이지의 소셜 그래프를 작성하여 시청자와 어떤 종류의 사진과 콘텐츠가 공진하는지 알 수 있도록 아래 스크립트를 작성하고 데이터베이스의 모든 URL을 반복하여 데이터를 얻었습니다. 필요합니다.
버튼 설명 선으로 만든 iframe으로 드릴 다운 하고이 URL을 생각해 냈습니다.
http : //pinit-cdn..com/pinit.html? url = http : //www.allrecipes.com
글쎄, 그 숫자는 그 자체의 div id CountBubble에 바로 표시됩니다. 그래서 나는 그것을 컬링하고 simple_html_dom PHP 라이브러리를 사용하여 구문 분석했습니다. 그래도 계속 0을 반환했습니다. 으악! 해당 번호는 페이지가로드 된 후 자바 스크립트로 변경됩니다. 요소를 검사하는 대신 소스를 보았어야합니다. 그래서 대신 소스를 보았고 프로그래밍 즐거움을 위해이 멋진 코드가 있습니다.
snode.setAttribute ( 'src', '//api..com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);
그로부터 다음 URL을 수집하여 필요한 데이터를 가져옵니다.
http : //api..com/v1/urls/count.json? callback = receiveCount & url = http : //www.allrecipes.com
표시되는 내용 :
receiveCount ({ "count": 1148, "url": "http://www.allrecipes.com"})
따라서 json 데이터는 아직 공개되지 않은 API에서 함수 호출로 래핑됩니다. 얼마나 편리한 지. 다음은 PHP에서이 작업을 수행하는 데 필요한 약간의 코드입니다. 서버에서 cURL을 활성화해야합니다.
$ pinurl = "http : //api..com/v1/urls/count.json? callback = receiveCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // cURL을 호출하는 함수를 통해 HTML을 가져옵니다. $ html = str_replace ( "receiveCount (", "", $ html); // 데이터가 $ html = substr ($ html, ""에 래핑 된 함수 호출을 제거합니다. -1); $ = json_decode ($ html); // json에서 PHP 배열로 변환 $ pincount = $-> count; echo $ pincount; // 숫자 함수가 있습니다 pull_html ($ url) {$ ch = curl_init () ; curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl_exec ($ ch); curl_close ($ ch); $ html 반환 ;}
보시다시피 curl을 사용하여 데이터를 가져온 다음 json 데이터를 감싸는 함수 호출을 제거합니다. 그런 다음 json_decode를 사용하여 json 데이터를 php 배열로 변환하면됩니다. 짜잔! 다 했어요 지금까지 약 3, 000 개의 URL을 실행했으며 데이터에 아무런 문제가 없습니다. 의도적으로 또는에 의해 확실하지 않은 경우가 있지만 시간이 조금 느 렸습니다. 입력 할 때 여전히 데이터를 가져 와서 저장합니다. 어느 시점에서 일종의 속도 제한이있을 것이라고 확신하지만, 지금까지 어떤 벽에도 뛰어 들지 않았습니다. 아마도 이것은 프로그래머에게 숨겨져서는 안되지만, 내가 아는 한, 당신이 그들이 일하기로 선택한 소수의 출판사 중 하나가 아닌 한 공식적인 지원은 없습니다.