Lấy số lượng Pinterest Pins bằng PHP

Kể từ khi pinterest đã nhiều lần đưa ra một ngày và sau đó không thể phát hành API của họ, tôi quyết định đưa vấn đề vào tay của riêng tôi. Xin lưu ý rằng đây không phải là cách lý tưởng để làm mọi thứ, nhưng, bây giờ nó hoạt động. Tôi muốn xây dựng biểu đồ xã hội của các trang phổ biến nhất để có thể biết loại ảnh và nội dung nào thu hút người xem, vì vậy tôi đã đưa ra kịch bản bên dưới và sau đó lặp qua mọi URL trong cơ sở dữ liệu của chúng tôi và nhận dữ liệu tôi cần thiết.

Tôi đã đi sâu vào khung nội tuyến được tạo bởi chú thích nút pinterest và đã tìm ra url này:
http://pinit-cdn.pinterest.com/pinit.html?url=http://www.allrecipes.com
Vâng đó là dễ dàng, số lượng được hiển thị ngay trong đó div div CountBubble riêng của nó. Vì vậy, tôi curl'ed nó, và sử dụng thư viện php simple_html_dom để phân tích cú pháp. Nó tiếp tục trở về 0 mặc dù. Rất tiếc! Số đó được thay đổi bằng javascript sau khi trang được tải. Nên đã xem nguồn thay vì kiểm tra phần tử. Vì vậy, tôi xem nguồn thay vào đó và có đoạn mã đẹp này chỉ ngồi đó vì niềm vui lập trình của tôi.

 snode.setAttribute ('src', '//api.pinterest.com/v1/urls/count.json?callback=receiveCount&url='+targetUrl); 

Từ đó, tôi thu thập các URL sau có lẽ sẽ kéo dữ liệu tôi cần,
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://www.allrecipes.com
hiển thị:

 getCount ({"count": 1148, "url": "http://www.allrecipes.com"}) 

Vì vậy, dữ liệu json của nó được bao bọc trong một cuộc gọi hàm từ API mà họ chưa phát hành công khai. Tiện như thế nào. Dưới đây là một chút mã bạn cần để thực hiện công việc này trong PHP. Bạn phải bật cURL trên máy chủ của mình.

 $ pinurl = "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // lấy html thông qua một hàm gọi cURL $ html = str_replace ("getCount (", "", $ html); // xóa hàm gọi dữ liệu được gói trong $ html = substr ($ html, "", -1); $ pinterest = json_decode ($ html); // chuyển đổi từ json thành php array $ pincount = $ pinterest-> count; echo $ pincount; // có hàm số 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;} 

Như bạn có thể thấy, chúng tôi kéo dữ liệu bằng curl rồi loại bỏ cuộc gọi hàm được bao quanh dữ liệu json. Sau đó, nó chỉ là vấn đề sử dụng json_decode để biến dữ liệu json thành một mảng php. Thì đấy! Tất cả đã được làm xong. Tôi đã chạy khoảng 3.000 URL cho đến nay và các dữ liệu đã trở lại không có vấn đề. Đó là một chút chậm ở lần, không chắc chắn nếu bằng cách thiết kế hoặc bằng. Nó vẫn đang kéo và lưu trữ dữ liệu khi tôi gõ nó. Tôi chắc chắn tại một số điểm sẽ có một số loại tỷ lệ hạn chế, nhưng tôi đã không chạy vào bất kỳ bức tường cho đến nay. Có lẽ điều này thậm chí không phải là ẩn từ các lập trình viên, nhưng theo như tôi biết, không có sự hỗ trợ chính thức trừ khi bạn là một trong số ít các nhà xuất bản mà họ đã chọn để làm việc.

Xem Thêm