เนื่องจากมีการกำหนดวันที่ซ้ำ ๆ กันจากนั้นไม่สามารถปล่อย API ของพวกเขาได้ฉันจึงตัดสินใจนำเรื่องนี้ไปไว้ในมือของฉันเอง โปรดทราบว่านี่ไม่ใช่วิธีที่ดีที่สุดในการทำสิ่งต่าง ๆ แต่สำหรับตอนนี้มันได้ผล ฉันต้องการสร้างกราฟโซเชียลของหน้าเว็บที่ได้รับความนิยมมากที่สุดของเราเพื่อให้เราสามารถรู้ได้ว่าภาพถ่ายและเนื้อหาประเภทใดที่สะท้อนกับผู้ชมของเราดังนั้นฉันจึงสร้างสคริปต์ด้านล่างแล้ววนซ้ำทุก URL ในฐานข้อมูลของเรา จำเป็น
ฉันเจาะลงไปใน iframe ที่สร้างโดยคำบรรยายภาพแบบปุ่มและมี URL นี้:
http: //pinit-cdn..com/pinit.html url = http: //www.allrecipes.com
นั่นเป็นเรื่องง่ายตัวเลขแสดงอยู่ใน CountBubble id ของตัวเอง ดังนั้นฉันจึงขดมันและใช้ไลบรารี 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 โทรกลับ = receiveCount & url = http: //www.allrecipes.com
ซึ่งแสดง:
receiveCount ({"นับ": 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); // รับ html ผ่านฟังก์ชั่นที่เรียก cURL $ html = str_replace ("receiveCount (", "", $ html); // ลบฟังก์ชั่นการโทรข้อมูลจะถูกห่อด้วย $ html = substr ($ html, "", -1); $ = json_decode ($ html); // แปลงจาก json เป็น php array $ 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); ;}
อย่างที่คุณเห็นเราดึงข้อมูลด้วยขดแล้วตัดการเรียกฟังก์ชันที่พันรอบข้อมูล json จากนั้นเป็นเรื่องของการใช้ json_decode เพื่อเปลี่ยนข้อมูล json ให้เป็นอาร์เรย์ php Voila! เสร็จหมดแล้ว. ฉันใช้งาน URL ไปแล้วประมาณ 3, 000 แห่งและข้อมูลกลับมาไม่มีปัญหา บางครั้งมันช้าเล็กน้อยไม่แน่ใจว่าเกิดจากการออกแบบหรือโดย มันยังคงดึงและจัดเก็บข้อมูลตามที่ฉันพิมพ์ ฉันแน่ใจว่าในบางจุดจะมีการ จำกัด อัตราการเรียงลำดับ แต่ฉันไม่ได้วิ่งเข้าไปในกำแพงใดเลย บางทีนี่อาจไม่ควรถูกซ่อนไว้จากโปรแกรมเมอร์ แต่เท่าที่ฉันรู้ไม่มีการสนับสนุนอย่างเป็นทางการถ้าคุณเป็นหนึ่งในผู้เผยแพร่ไม่กี่คนที่พวกเขาเลือกที่จะทำงานด้วย