PHP根据元器件型号抓取500条数据并存入txt

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。PHP根据元器件型号抓取500条数据并存入txt,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

有一个哥们找我抓取一下数据,根据500多个元器件型号,在某个网站去查并且写入txt文件。于是怎么简单怎么来,使用一个叫simple_html_dom.php的解析库。下载地址:https://github.com/zhiquan181/zqtoys/tree/master/YQJDatas

doc.php

<meta charset="utf-8">
<?php
	ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
	error_reporting(0);
	header("Content-type: text/html; charset=utf-8");
	include('simple_html_dom.php');
 	// error_reporting(0);  
	$ch = curl_init();
	$j = 0;
	$k = 0;
	$l = 0;
	$arr_url = array(
		'MP4032-2GS-Z',
		'MP9180DG-LF-Z',
		'MP28252EL-LF-Z',
		...//假装500条
		'MP3204DJ-Z',
		'MP1521EQ-LF-Z',
	);
	$arr_length = sizeof($arr_url);
	//var_dump($arr_length);
	
	for ($i=0; $i <$arr_length ; $i++) {
		//伪造ip来源
		$ip = $_GET['ip'] ? $_GET['ip'] : '1.1.1.1'; 
		$ipArr = explode(".",$ip); 
		$ipArr[3]=rand(1,255); 
		$ipArr[2]=rand(1,255);
		$ipArr[1]=rand(1,255);
		$ipArr[0]=rand(1,255);
		$ip = implode(".",$ipArr);
		$headers['CLIENT-IP'] = $ip;
		$headers['X-FORWARDED-FOR'] = $ip;
		curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);

		//伪造user_agent
		$user_agent = 'Safari Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/7.0.1 Safari/5'; 
		curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

		//url请求
		$uri = 'http://www.oemstrade.com/search/';
		curl_setopt($ch, CURLOPT_URL, $uri.$arr_url[$i]);    
		curl_setopt($ch, CURLOPT_HEADER, 1);
		curl_setopt($ch, CURLOPT_REFERER, "http://www.oemstrade.com/"); //构造来路
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
		$output = curl_exec($ch) ;

		//html解析
		$html = new simple_html_dom();
	    $html->load($output);
	    $target = array();
	    $number = $html->find('#list1562 > table > tbody > tr > td.td-part-number > a');
	    // $name = $html->find('#list1562 > table > tbody > tr > td.td-distributor-name > span');
	    $description = $html->find('#list1562 > table > tbody > tr > td.td-description > p');
	    $stock = $html->find('#list1562 > table > tbody > tr > td.td-stock > p > span > b');
	    // $price = $html->find('#list1562 > table > tbody > tr > td.td-price');
	    // var_dump($number[0]->plaintext);
	    // var_dump($name[0]->plaintext);
	    // var_dump($description[0]->plaintext);
	    // var_dump($stock[0]->plaintext);
	    // var_dump($price[0]->plaintext);
	    // var_dump($dom[0]->plaintext);

	    if ($description[0]->plaintext) {        
        	$open=fopen("target.txt","a" );//a代表追加
        	fwrite($open,$arr_url[$i].";".$number[0]->plaintext.";".$description[0]->plaintext.";".$stock[0]->plaintext.";"."\r\n");
        	// var_dump($arr_url[$i].";".$number[0]->plaintext.";".$description[0]->plaintext.";".$stock[0]->plaintext.";");
			fclose($open);
	        $j++;
	    }
	    else{
        	$open=fopen("target.txt","a" );//a代表追加
        	fwrite($open,$arr_url[$i].";"."NO DATA!"."\r\n");
        	// var_dump($arr_url[$i].";"."NO DATA!");
			fclose($open);
			$l++;
	    }
	    $k++;
	}

	print_r('总共'.$k.'个数据已经检索完成!其中,查询有结果的有'.$j.'个,查询无结果的有'.$l.'个。');

运行如下:

PHP根据元器件型号抓取500条数据并存入txt

生成txt

PHP根据元器件型号抓取500条数据并存入txt手动复制到excel,利用分隔符分列就可以了

PHP根据元器件型号抓取500条数据并存入txt

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/151196.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!