Anonim

Vì đã liên tục đư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 mình. Xin lưu ý rằng đây không phải là cách lý tưởng để làm việc, nhưng, bây giờ nó hoạt động. Tôi muốn xây dựng một biểu đồ xã hội gồm các trang phổ biến nhất của chúng tôi để chúng tôi có thể biết loại ảnh và nội dung nào đang gây được tiếng vang với người xem của chúng tôi, vì vậy tôi đã đưa ra kịch bản bên dưới và sau đó lặp qua từng URL trong cơ sở dữ liệu của chúng tôi và nhận được dữ liệu tôi cần thiết

Tôi đã đi sâu vào iframe được tạo bởi chú thích nút và đưa ra url này:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Thật dễ dàng, con số được hiển thị ngay tại đó trong id id CountBubble của chính nó. Vì vậy, tôi đã cuộn nó lại và sử dụng thư viện php đơn giản_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 thế và có đoạn mã đẹp này chỉ để ngồi đó cho niềm vui lập trình của tôi.

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

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

receiveCount ({"tính": 1148, "url": "http://www.allrecipes.com"})

Vì vậy, dữ liệu json của nó được gói trong một lệnh 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 ít mã bạn cần để làm cho công việc này trong PHP. Bạn phải kích hoạt cURL trên máy chủ của mình.

$ pinurl = "http: //api..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 numplace ("receiveCount (", "", $ html); // xóa hàm gọi dữ liệu được gói trong $ html = struct ($ html, "", -1); $ = json_decode ($ html); // chuyển đổi từ json sang mảng php $ pincount = $ -> 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); ;}

Như bạn có thể thấy, chúng tôi kéo dữ liệu bằng curl sau đó loại bỏ lệnh gọi hàm bao quanh dữ liệu json. Sau đó, vấn đề chỉ là sử dụng json_decode để biến dữ liệu json thành một mảng php. Voila! Tất cả đã được làm xong. Tôi đã chạy khoảng 3.000 URL cho đến nay và dữ liệu đã trở lại không có vấn đề. Đôi khi nó hơi chậm, không chắc là do thiết kế hay do. Nó vẫn kéo và lưu trữ dữ liệu khi tôi gõ này. Tôi chắc chắn tại một thời điểm nào đó sẽ có một số loại giới hạn tỷ lệ, nhưng tôi đã không chạy vào bất kỳ bức tường nào cho đến nay. Có thể điều này thậm chí không được giấu khỏi các lập trình viên, nhưng theo tôi biết, không có 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 cùng.

Lấy số lượng chân pinterest trong php