며칠 전에 소설을 연재하는 프로그램을 만들었는데, 업데이트가 어려울까봐 팔로중문망에서 정보를 수집하는 방식으로 컬렉터를 작성했습니다. 기능이 비교적 간단하고 규칙을 맞춤 설정할 수 없습니다. , 그러나 일반적인 아이디어는 그 안에 있습니다. 규칙을 직접 확장할 수 있습니다.
PHP를 수집기로 사용하는 경우 주로 file_get_contents()와 preg_match_all() 두 가지 함수를 사용합니다. 전자는 웹 페이지 콘텐츠를 원격으로 읽는 데 사용되지만 후자는 일반 함수입니다. 필요한 콘텐츠를 추출합니다.
이제 단계별로 기능 구현에 대해 이야기해 보겠습니다.
소설을 수집하고 있기 때문에 먼저 책 제목, 작가, 장르를 추출해야 합니다. 기타 정보는 필요에 따라 추출할 수 있습니다.
여기의 목표는 "명나라로 돌아가 왕자가 된다"입니다. 먼저 참고문헌 페이지를 엽니다. 링크: http://www.86zw.com/Book/3727/Index.aspx
몇 개 엽니다. 더 많은 책을 찾을 수 있습니다. 책 제목의 기본 형식은 http://www.86zw.com/Book/书号/Index.aspx이므로 시작 페이지를 만들고 입력용 향후 수집해야 할 도서번호는 $_POST['number'] 형식으로 받아볼 수 있습니다. 도서 번호를 받은 후 다음으로 할 일은 참고문헌 페이지를 구성하는 것입니다: $url=http://www.86zw.com/Book/$_POST['number']/Index.aspx 물론입니다. 설명하기 쉽기 때문에 실제로 만들 때 $_POST['number'] 의 합법성을 확인하는 것이 가장 좋습니다.
URL을 구축한 후에는 도서 정보 수집을 시작할 수 있습니다. 참고문헌 페이지를 열려면 file_get_contents() 함수를 사용하십시오: $c 참고문헌 페이지를 열고 소스 파일을 보고 ""Return to the Ming Wang to Be a Prince""을 찾으십시오. 추출할 책의 제목입니다. 책 제목을 추출하는 정규식: /(.*?)/is, 책 제목을 추출하려면 preg_match_all() 함수를 사용하세요. preg_match_all("/< span class ="newstitle">(.*?)/is",$contents,$title); 이런 식으로 $title[0][0]의 내용은 우리가 원하는 제목입니다( preg_match_all 함수의 사용법은 Baidu에 가서 확인할 수 있습니다. 여기서는 자세히 설명하지 않겠습니다. 책 정보를 가져온 후 다음 단계는 장 콘텐츠를 가져오는 것입니다. 장 콘텐츠를 가져오기 위해 가장 먼저 해야 할 일은 각 장의 주소를 찾은 다음 원격으로 장을 열고 일반 규칙을 사용하여 콘텐츠를 가져오는 것입니다. 데이터베이스에 저장하거나 html 정적 파일을 직접 생성합니다. 장 목록의 주소는 다음과 같습니다: http://www.86zw.com/Html/Book/18/3727/List.shtm 참고문헌 페이지와 동일하며 다음과 같은 규칙이 있음을 알 수 있습니다. 찾을 수 있습니다: http://www .86zw.com/Html/Book/Classification Number/Book Number/List.shtm. 도서 번호는 이전에 얻었습니다. 여기서 핵심은 분류 번호를 찾는 것입니다. 분류 번호는 이전 서지 페이지에서 찾을 수 있습니다.
preg_match_all("/Html/Book/[0-9) ]{1,}/[0 -9]{1,}/List.shtm/is",$contents,$typeid); 이것만으로는 충분하지 않습니다. 잘라내기 기능도 필요합니다.
PHP 코드는 다음과 같습니다. 다음:
함수 잘라내기($string,$start ,$end){
$message = 폭발($start,$string)
$message = 폭발($end,$message[1]) ; return $message[0];}여기서 $string은 잘라낼 내용의 경우 $start가 시작점이고 $end가 끝점입니다. 분류 번호 가져오기:
$start = "Html/Book/";
$end
= "List.shtm"
$typeid = cut($typeid[0][0], $ start,$end);
$typeid =explore("/",$typeid);[/php]
이렇게 $typeid[0]가 우리가 찾고 있는 분류번호입니다. 다음 단계는 챕터 목록의 주소를 구성하는 것입니다: $chapterurl = http://www.86zw.com/Html/Book/.$typeid[0]/$_POST['number']/List.shtm. 이를 통해 각 장의 주소를 찾을 수 있습니다.
$ustart = """;
$uend
= """;
//t는 제목의 약어를 나타냅니다
$tstart = ">" ;
$tend
= "<"; ]{1,}.(shtm)"/is",$chapterurl,$url);
//제1장 선한 사람들의 9개 세계
preg_match_all("/< a href="[0-9]{ 1,}.shtm"(.*?)/is",$file,$title);
$count = count($url[0] );
for($i= 0;$i<=$count;$i )
{
$u = cut($url[0][$i],$ustart,$uend) ;
$t = cut($ title[0][$i],$tstart,$tend)
$array[$u] = $t
} $array 배열 는 모든 챕터 주소입니다. 여기에서 수집 프로세서는 절반만 완료되었으며 나머지는 각 챕터 주소를 반복하여 읽은 다음 내용을 일치시키는 것입니다. 이는 비교적 간단하므로 여기서는 자세히 설명하지 않습니다. 자, 오늘은 이만 마치겠습니다. 이렇게 긴 글은 처음이라 언어 구성에 문제가 있을 수 있으니 양해 부탁드립니다.
위 내용은 Dede Collector의 내용을 포함하여 간단한 Content Collector를 만들기 위해 PHP를 이용한 Dede Collector의 원리 분석을 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.