>  기사  >  백엔드 개발  >  file_get_contents 및 컬을 사용하여 컬렉션 작성

file_get_contents 및 컬을 사용하여 컬렉션 작성

PHP中文网
PHP中文网원래의
2017-07-29 18:27:011619검색

사용할 데이터가 모두 동일한 웹사이트에 있고 데이터 표시 형식이 동일한 경우가 많습니다. 예를 들어 Taobao나 Amazon에 있는 수천 개의 제품처럼 정보를 수동으로 입력하면 작업량이 너무 많아질 것입니다. 이때 우리는 수집 프로그램을 작성하여 직접 수집하고 표시할 수 있습니다. 서버는 file_get_contents 및 컬을 지원합니다

먼저 페이지에 텍스트 상자와 제출 버튼을 추가합니다. 텍스트 상자는 컬렉션 페이지 주소를 입력하는 데 사용됩니다.

Collection은 일반 가로채기 기능을 사용해야 합니다.

function preg_substr($start, $end, $str) // 正则截取函数      
{      
    $temp = preg_split($start, $str);      
    $content = preg_split($end, $temp[1]);      
    return $content[0];      
}


Collection은 문자열 가로채기 기능을 사용해야 합니다.

function str_substr($start, $end, $str) // 字符串截取函数      
{      
    $temp = explode($start, $str, 2);      
    $content = explode($end, $temp[1], 2);      
    return $content[0];      
}


수집된 콘텐츠를 저장하는 기능도 있습니다.

function writelog($str)
{
@unlink("log.txt");
$open=fopen("log.txt","a" );
fwrite($open,$str);
fclose($open);
}

가끔 수집되는 콘텐츠가 다를 때도 있습니다. from ours 브라우저를 통해 본 콘텐츠가 일치하지 않아 올바른 정규식을 찾을 수 없습니다. 여기에서 저장된 txt 파일을 열고 그 안에서 가로채는 올바른 문자열을 찾을 수 있습니다.


사진까지 수집해야 하는 경우 사진 기능을 사용해야 합니다.

function getImage($url, $filename='', $dirName, $fileType, $type=0)
{
    if($url == ''){return false;}
    //获取文件原文件名
    $defaultFileName = basename($url);
    //获取文件类型
    $suffix = substr(strrchr($url,'.'), 1);
    if(!in_array($suffix, $fileType)){
        return false;
    }
    //设置保存后的文件名
    $filename = $filename == '' ? time().rand(0,9).'.'.$suffix : $defaultFileName;
          
    //获取远程文件资源
    if($type){
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $file = curl_exec($ch);
        curl_close($ch);
    }else{
        ob_start();
        readfile($url);
        $file = ob_get_contents();
        ob_end_clean();
    }
    //设置文件保存路径
    $dirName = $dirName.'/'.date('Y', time()).'/'.date('m', time()).'/'.date('d',time()).'/';
    if(!file_exists($dirName)){
        mkdir($dirName, 0777, true);
    }
    //保存文件
    $res = fopen($dirName.$filename,'a');
    fwrite($res,$file);
    fclose($res);
    return $dirName.$filename;
}

수집 코드 추가 제출을 방지하기 위해 여기에 수집 코드가 추가되므로 사진으로 직접 이동합니다. Amazon 제품 페이지를 예로 들어보세요.

아래와 같이 컬렉션 결과를 보세요. 여기에는 콘텐츠만 표시됩니다. 데이터베이스에 가입하는 것은 비교적 간단합니다. 시간이 나면 컬렉션을 소개하겠습니다. 자동으로 하위 링크를 입력하거나 자동으로 페이지를 넘길 수 있습니다.

위 내용은 file_get_contents 및 컬을 사용하여 컬렉션 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.