天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

分享下頁面關鍵字抓取components.arrow.com站點代碼

復制代碼 代碼如下:
<?php
 /**
 * HOST: components.arrow.com
 */
 //set_time_limit(0);
 // base function
 function curl_get($url, $data = array(), $header = array(), $timeout = 15, $port = 80, $reffer = '', $proxy = '')
 {
 $ch = curl_init();
 if (!empty($data)) {
 $data = is_array($data)?http_build_query($data): $data;
 $url .= (strpos($url,'?')? '&': "?") . $data;
 }
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 curl_setopt($ch, CURLOPT_POST, 0);
 curl_setopt($ch, CURLOPT_PORT, $port);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //是否抓取跳轉后的頁面
 $reffer && curl_setopt($ch, CURLOPT_REFERER, $reffer);
 if($proxy) {
 curl_setopt($ch, CURLOPT_PROXY, $proxy);
 curl_setopt($ch, CURLOPT_PROXYPORT, 1723);
 curl_setopt($ch, CURLOPT_PROXYUSERPWD,"andhm001:andhm123");
 }

$result = array();
 $result['result'] = curl_exec($ch);
 if (0 != curl_errno($ch)) {
 $result['error'] = "Error:/n" . curl_error($ch);

}
 curl_close($ch);
 return $result;
 }

復制代碼 代碼如下:
function curl_post($url, $data = array(), $header = array(), $timeout = 15, $port = 80)
 {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 curl_setopt($ch, CURLOPT_PORT, $port);
 !empty ($header) && curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$result = array();
 $result['result'] = curl_exec($ch);
 if (0 != curl_errno($ch)) {
 $result['error'] = "Error:/n" . curl_error($ch);

}
 curl_close($ch);

return $result;
 }

/**
 * 獲取列表頁的html源碼
 * @param string $keywords 搜索關鍵字
 * @param int $start 開始記錄數
 * @return boolean|array
 */
 function getListHtml($keywords, $start = 0)
 {
 if ($start < 0)
 {
 return false;
 }

$postData = array(
 'search_token' => $keywords,
 'start' => $start,
 'limit' => 100,
 );

$result = curl_post('http://components.arrow.com/part/search/' . $keywords, http_build_query($postData));
 if ( isset($result['error']) )
 {
 return false;
 //exit($result['error']);
 }
 $result = $result['result'];

return $result;
 }

/**
 * 獲取列表頁 連接href
 * @param string $html html源碼
 * @return array
 */
 function getListHref($html)
 {
 $pattern = '/<td/s+class="col_mfr_part_num"><a/s+href="(.[^>]+)">/isU';
 if (preg_match_all($pattern, $html, $matches))
 {
 return $matches[1];
 } else {
 // 沒有匹配項
 return array();
 }
 }

/**
 * 獲取數字start
 * @param string $html html源碼
 * @return number
 */
 function getListNextPage($html)
 {
 $pattern = '/<script/s+language="Javascript">buildPagination/(/'/d+/',/'/d+/',/'(/d+)/',/d+/);<//script>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 return intval($matches[1]);
 } else {
 return -1;
 }
 }

/**
 * 獲取列表也所有的詳細列表
 * @param string $keywords 搜索關鍵字
 * @return boolean|array
 */
 function getListHrefAll($keywords)
 {
 if (empty($keywords))
 {
 return false;
 }

$html = getListHtml($keywords);
 $hrefList = getListHref($html);
 if (empty($hrefList))
 {
 // 沒有結果
 return array();
 }
 $nextPage = getListNextPage($html);
 $loop =0;
 while ($nextPage > 0)
 {
 $html = getListHtml($keywords, $nextPage);
 $tmpHrefList = getListHref($html);
 $hrefList = array_merge($hrefList, $tmpHrefList);
 $nextPage = getListNextPage($html);
 $loop ++;
 }
 return $hrefList;
 }

/**
 * 獲取詳情頁信息
 * @param string $url url地址
 * @return array()
 */
 function getDetail($url)
 {
 if ( empty($url) )
 {
 return false;
 }
 $host = 'http://components.arrow.com';

$url = $host . $url;
 $result = curl_get($url);
 if ( isset($result['error']) )
 {
 return array();
 //exit($result['error']);
 }
 $html = $result['result'];

$result = array(
 'sup_part' => '', // 供應商型
 'sup_id' => '', // 供應商ID
 'mfg_part' => '', // 制造商型號
 'mfg_name' => '', // 制造商名稱
 'cat_name' => '', // 分類名稱
 'para' => '', // 屬性
 'desc' => '', // 描述
 'pdf_url' => '', // PDF地址
 'sup_stock' => '', // 庫存
 'min_purch' => '', // 最小訂購量
 'price' => '', // 價格
 'img_url' => '', // 圖片地址
 'createtime' => '', // 創建時間
 'datacode' => '', // 批號
 'package' => '', // 封裝
 'page_url' => '', // 頁面地址
 );

// mfg_part
 $pattern = '/<li>[/s/n]*<strong>Part No:/s*<//strong>(.+)<//li>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['mfg_part'] = trim($matches[1]);
 } else {file_put_contents('page.txt', $html);die('xxx');
 return array();
 }

// mfg_name
 $pattern = '/<li>[/s/n]*<strong>Manufacturer: <//strong>(.+)<//li>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['mfg_name'] = trim($matches[1]);
 }

// cat_name
 $pattern = '/displayCategory/(/'(.[^/']+)/'/);/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['cat_name'] = trim($matches[1]);
 $result['cat_name'] = str_replace('|', '>', $result['cat_name']);
 }

// para
 $tablepattern = '/<table/s+id="part_specs".[^>]*>(.+)<//table>/isU';
 if (preg_match($tablepattern, $html, $matches))
 {
 $pattern = '/<tr>[/s/n]*<td><strong>(.+)<//strong><//td><td>(.+)<//td>[/s/n]*<//tr>/isU';
 if (preg_match_all($pattern, $matches[1], $matches))
 {
 foreach($matches[1] as $k=>$v)
 {
 $v = trim($v);
 if ('Package Type' == $v)
 {
 $result['package'] = trim($matches[2][$k]);
 continue;
 }
 $result['para'][$v] = trim($matches[2][$k]);
 }
 }
 }

// desc
 $pattern = '/<div/s+id="part_title">.+<h4>(.+)<//h4>[/s/n]*<//div>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['desc'] = trim($matches[1]);
 }

// pdf_url
 $pattern = '/<li/s+class="datasheet">[/s/n]*<strong>Datasheet:<//strong><a/s+href="(.[^"]+)"/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['pdf_url'] = $host . trim($matches[1]);
 }

// sup_stock
 $pattern = '/<td/s+id="inv_1"/s+class="li_inv">([/d,]+)<//td>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['sup_stock'] = trim($matches[1]);
 $result['sup_stock'] = str_replace(',', '', $result['sup_stock']);
 }

// min_purch
 $pattern = '/<span/s+id="multiples">[/s/n]*<strong>Multiple:/s*<//strong>(.+)<//span>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['min_purch'] = trim($matches[1]);
 }

// price
 $pattern = '/<div/s+id="price_1"/s+class="li_price">(.[^<]+)<//div>/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['price'][1] = trim($matches[1]);
 }
 $pattern = '/<div/s+id="price_1"/s+class="li_price">[/s/n]*<span.[^>]+title="(.[^"]+)">/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $priceurl = str_replace('&', '&', $matches[1]);
 $json = curl_get($priceurl);
 $json = $json['result'];
 if (! empty($json))
 {
 $jsonresult = json_decode($json, true);
 foreach ($jsonresult['parts'][0]['webprice']['resale'] as $k=>$v)
 {
 $result['price'][$v['minqty']] = $v['price'];
 }
 }
 }

// img_url
 $pattern = '/<div/s+id="part_image">[/s/n]*<img/s+src="(.[^"]+)"/isU';
 if (preg_match($pattern, $html, $matches))
 {
 $result['img_url'] = trim($matches[1]);
 }

// page_url
 $result['page_url'] = $url;

return $result;
 }

/**
 * 最終調用函數
 * @param string $keywords 搜索關鍵字
 * @return array
 */
 function getData($keywords)
 {
 $hrefList = getListHrefAll($keywords);
 $result = array();

foreach ($hrefList as $k=>$v)
 {
 $result[] = getDetail($v);
 }

return $result;
 }

// Test Script
 $keywords = trim($_GET['keywords']);
 $result = getData($keywords);

print_r($result);

php技術分享下頁面關鍵字抓取components.arrow.com站點代碼,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品高清在线观看地址 | 国产精品亚欧美一区二区三区 | 搞av.com| 湖南张丽大战黑人hd视频 | 大睾丸内射老师 | 超碰97人人做人人爱亚洲尤物 | 被窝国产理论一二三影院 | 亚洲精品自在线拍2019 | 一抽一出BGM免费50分动漫 | 日本熟妇乱人伦A片精品软件 | 蜜桃视频一区二区 | 动态抽插图视频 | 国产精品伦理一二三区伦理 | 俄罗斯搜索引擎Yandex推广入口 | 在线伦理电影网 | 二色AV天堂在线 | 国色天香视频在线社区 | 久久青青草原精品国产软件 | 国产白丝JK被疯狂输出视频 | 国产精品久久久久久久久齐齐 | 中文字幕免费在线视频 | 国产一区二区三区乱码在线观看 | 少妇伦子伦情品无吗 | 日日操天天操夜夜操 | 精品久久电影网 | 日本工口生肉全彩大全 | 国产精品VIDEOS麻豆TUBE | 俄罗斯大白屁股 | 国产精品第1页在线观看 | 久久久久婷婷国产综合青草 | 欧美videos人牛交 | georgielyall装修工 | 国产一区二区青青精品久久 | 四虎永久在线精品国产免费 | 国产精品久久久久久人妻香蕉 | 九九热久久只有精品2 | 国产网址在线观看 | 手机在线观看毛片 | 男人天堂黄色 | 日本最新免费区中文 | 最近中文字幕在线中文高清版 |