ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingปรึกษา code php - อยากจะเก็บ url ที่ google index ไปใน web เรา ด้วย ajax api
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ปรึกษา code php - อยากจะเก็บ url ที่ google index ไปใน web เรา ด้วย ajax api  (อ่าน 1872 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
nopchan
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 248
ออฟไลน์ ออฟไลน์

กระทู้: 1,226



ดูรายละเอียด
« เมื่อ: 23 กันยายน 2009, 09:43:49 »

ปรึกษา code php - อยากจะเก็บ รายละเอียด url ที่ google index ไปใน web เรา ด้วย ajax google api

ตอนนี้เจอปัญหา ว่า ดึง มาได้ แค่หน้าแรก ๆ เอง แล้ว ก็ ขึ้น out off range  ซะแล้ว ทั้งที่จำนวน index มีเยอะ มาก ๆ

ตัวอย่าง code ตัดมาส่วนหนึ่ง
โค๊ด:

require_once('JSON.php');
$urltext = "";
$urlvisible = "";
$urltitle ="";
$urlcontent="";
$listloop = 5;
$count=1;
$dbconfig = new DbConfiguration();
$lastget  = $dbconfig->lastget;
echo "last : ".$lastget;
for( $i = 0; $i <= $listloop; $i++) {

$varstart = $lastget + ($i*8);
$url = 'http://ajax.googleapis.com/ajax/services/search/web?rsz=large&v=1.0&start='.$varstart.'&hl=th&q='.urlencode('site:'.'[url=http://www.xxxxxx.com]www.xxxxxx.com[/url]');

// use fopen and fread to pull Google's search results
sleep(rand(5, 10));
echo "get loop".$varstart."<br />";
$handle = fopen($url, 'rb');
$body = '';
while (!feof($handle)) {
$body .= fread($handle, 8192);
}
fclose($handle);

// now $body is the JSON encoded results. We need to decode them.

$json = new Services_JSON();
$json = $json->decode($body);

// now $json is an object of Google's search results and we need to iterate through it.

foreach($json->responseData->results as $searchresult)
{
if($searchresult->GsearchResultClass == 'GwebSearch')
{
$urltext = $searchresult->unescapedUrl;
$urlfrom = $searchresult->visibleUrl;
$urltitle =$searchresult->titleNoFormatting;
$urlcontent=$searchresult->content;
$urlgetdate = gmdate("Y-m-d\TH:i:s\Z");
$strText = $count.",".$urltext.",".$urlfrom.",".$urltitle.",".$urlcontent.'\n\r';
fwrite($objFopen, $strText);

$qtext = "SELECT urltext FROM urllists WHERE urltext='".$urltext."'";
$result =& $db->query ($qtext);
    if (DB::isError ($result))
      die ("SELECT failed: " . $result->getMessage () . "\n");
   
        if($result->numRows () <= 0){



$txtsql = "INSERT INTO urllists (id, urltext, urlfrom,urltitle,urlcontent,urlgroup ,urlgetdate) VALUES
                             (0,'".$urltext."','". $urlfrom."' ,'". addslashes($urltitle)."' ,'".addslashes($urlcontent)."','".$varstart."','".$urlgetdate."')";
 
$result =& $db->query ($txtsql);
    if (DB::isError ($result))
      die ("INSERT failed: " . $result->getMessage () . "\n");


$count++;
echo $urlvisible.'  '.$urltitle.'<br />';
}

}
}
$dbconfig->lastget = $varstart;

}

บันทึกการเข้า
nopchan
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 248
ออฟไลน์ ออฟไลน์

กระทู้: 1,226



ดูรายละเอียด
« ตอบ #1 เมื่อ: 23 กันยายน 2009, 16:51:48 »

ดันนิด ..  ว่ามีใคร พอช่วยได้ ไหม ..  Tongue
บันทึกการเข้า
เก๋าลัดคุง
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 3,906



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 23 กันยายน 2009, 17:45:59 »

อ้างถึง
ini_set('max_execution_time',90);

 :Smiley ไว้บนๆ เำพิ่มเลขตามใจครับ
บันทึกการเข้า

ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 23 กันยายน 2009, 18:24:04 »

ลองใช้ cURL แทน fopen() ซิครับ
บันทึกการเข้า
nopchan
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 248
ออฟไลน์ ออฟไลน์

กระทู้: 1,226



ดูรายละเอียด
« ตอบ #4 เมื่อ: 23 กันยายน 2009, 19:48:38 »

มันไม่ใช่ ปัญหา execute time  แล้วหลุดน่ะครับ

   $varstart = $lastget + ($i*Cool;

คือ มัน display หน้าละ 8 รายการ  ผม เลย วน loop ให้แสดง ครั้งแรก ก็ได้ 1 - 8   พอ loop ที่ 2  ก็ รายการ ที่ 9 - 16  ไปที ละ 8  ครับ พอไป หลาย ๆ หน้าสักหน่อย จำไม่ได้ ว่าหน้าที่เท่าไหร่ มัน ก็ บอก ว่า ไม่มี หน้า นี้ แล้ว เกิด over แล้ว  ทั้งที่  index หลักแสน มันควร มีหน้าเยอะ มาก  แต่ ทำไม แค่ สามหรือสี่ หน้า ก็  บอก ว่าไม่มีหน้า ต่อไป แล้ว   run ครั้งถัดไป ผม ลอง ข้าม ไปเรียก ตั้งแต่ หน้า ที่ผม จบ ทีแรก เลย  พอเรียก หน้าแรก ก็ ขึ้น out of range  เลย ครับ
บันทึกการเข้า
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 23 กันยายน 2009, 23:54:42 »

ถ้างั้นลองเพิ่มค่าใน for( $i = 0 .. และ $listloop เพื่อให้มันไปอ่านหน้าท้ายๆ ตั้งแต่แรกเลย จะได้รู้ว่า ปัญหาเกิดจากอ่านจำนวนหน้ามากเกินไป หรือหน้าท้ายๆ อ่านไม่ได้
บันทึกการเข้า
nopchan
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 248
ออฟไลน์ ออฟไลน์

กระทู้: 1,226



ดูรายละเอียด
« ตอบ #6 เมื่อ: 24 กันยายน 2009, 17:36:00 »

ถ้างั้นลองเพิ่มค่าใน for( $i = 0 .. และ $listloop เพื่อให้มันไปอ่านหน้าท้ายๆ ตั้งแต่แรกเลย จะได้รู้ว่า ปัญหาเกิดจากอ่านจำนวนหน้ามากเกินไป หรือหน้าท้ายๆ อ่านไม่ได้


ผมลอง test  search ใน google  site:xxxxx.com  แล้ว มี หลักแสน

พอ ลองกำหนด ให้ อ่าน เริ่มต้นที่ รายการที่ 1000  มันก็ขึ้น

last : 2000get loop2000 http://ajax.googleapis.com/aja...=th&q=site%3Awww.xxxxx.com
{"responseData": null, "responseDetails": "out of range start", "responseStatus": 400}


แล้วเกี่ยวอะไร กับ google ajax api key ไหม ครับ ผม ไม่ได้ใส่ ตรงไหน เลย .. มันถูกจำกัด จำนวนหน้า ที่เรียก หรือ เปล่า  หรือ ว่า มี วิธี เขียน ที่ใส่ key แล้ว เรียก ได้เยอะกว่านี้  เคยได้ยินว่า มี ให้ ลงทะเบียน ajax api key
บันทึกการเข้า
7
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 1,353



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 24 กันยายน 2009, 18:37:29 »

ทำยังไงก็ไม่ได้หรอก google มันจะแสดงได้แค่ 1000 รายการเท่านั้น
บันทึกการเข้า

ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 24 กันยายน 2009, 19:23:57 »

ถ้าใช้ Yahoo BOSS จะได้เกินไหม แต่มีความรู้สึกว่า bot ของ Y! มันไม่ขยันเก็บ index หน้าเว็บ เหมือนของ G
http://developer.yahoo.com/sea...h/boss/boss_guide/ch03s02.html
บันทึกการเข้า
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 25 กันยายน 2009, 10:59:48 »

แอบมาดูไม่เคยทำเลย wanwan015
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
หน้า: [1]   ขึ้นบน
พิมพ์