-
- function match_links($document) {
- preg_match_all("'
] ))[^>]*>?(.*?)'isx",$document,$links);
- while(list($key,$val) = 각각($links[2])) {
- if(!empty($val))
- $match['link'][] = $ val;
- }
- while(list($key,$val) = 각각($links[3])) {
- if(!empty($val))
- $match['link '][] = $val;
- }
- while(list($key,$val) = 각각($links[4])) {
- if(!empty($val))
- $match['content'][] = $val;
- }
- while(list($key,$val) = 각각($links[0])) {
- if(!empty( $val))
- $match['all'][] = $val;
- }
- $match 반환
- }
코드 복사
주로 규칙성에 문제가 있습니다. 다음은 더 많은 규칙성을 테스트하기 위한 asp.net의 예입니다.
페이지의 링크 규칙성을 가져옵니다.
-
- 공개 문자열 GetHref(string HtmlCode)
- {
- string MatchVale = ""
- string Reg = @"(h|H )(r|R)(e|E)(f|F) *= *('|"")?((w|\|/|.|:|-|_) )('|""| * |>)?";
- foreach(Regex.Matches(HtmlCode, Reg)에서 m 일치)
- {
- MatchVale = (m.Value).ToLower().Replace("href=", "").Trim() "||";
- }
- return MatchVale;
- }
코드 복사
예제 2, php 정규식을 통해 콘텐츠의 원격 이미지를 다운로드하기 위한 함수 코드
PHP 정규식을 사용하여 콘텐츠의 이미지를 결정하고 이 도메인 이름에 속하지 않는 이미지를 다운로드하고 저장하는 프로그램입니다.
이 프로그램은 실제로 "도둑 프로그램"의 중요한 부분입니다.
프로그램의 이 섹션은 원격 이미지를 다운로드하는 섹션입니다.
-
- if (preg_match_all("/http://[^ "'] [.jpg|.gif|.jpeg|.png] /ui", Stripcslashes($content),$aliurl)){
- $i=0; //여러 파일
- while(list($key ,$v) = Each($aliurl[0])){
- //echo $v."
";
- $filetype = pathinfo($v, PATHINFO_EXTENSION); //접미사 이름 가져오기
- $ff = @file_get_contents($v); 바이너리 파일 콘텐츠 가져오기
- if(!stripos($v,"jbxue.com")){//자신의 웹사이트에서 가져온 이미지인지 확인
- if (!empty($ff)){ / / 파일을 구한 후 다음 작업을 수행합니다
- $dir = "upload/".date("Ymd")."/";//새 저장 경로 지정
- if (!file_exists($dir) ){ //디렉터리 존재 여부 확인
- @mkdir($dir,511,true); //다단계 디렉터리 생성, 10진수로 변환한 511은 실행 권한이 있는 777입니다
- } //bbs.it -home.org
- $nfn = $dir.date("Ymdhis").$i.".".$filetype; //빌드 파일의 새 이름
- $nf = @fopen($nfn," w"); //파일 생성
- fwrite($nf,$ff); //파일 쓰기
- fclose($nf); //파일 닫기
- $i; //여러 파일
- echo "< ;img src="".$nfn."">";
- $content = str_replace($v,$nfn, $content);//콘텐츠의 매개변수 바꾸기
- }else{/ /Get 사진을 사용할 수 없는 경우 기본 사진으로 교체하세요
- $content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//컨텐츠의 매개변수 교체
- }
- }
- }
- }
코드 복사
예제 3, PHP는 정규 표현식을 통해 이미지를 로컬로 다운로드합니다.
-
-
/* - 부족: 웹페이지의 이미지 경로가 절대 경로, 크롤링할 수 없음
- */
- set_time_limit(0);//크롤링은 시간에 의해 제한되지 않습니다
$URL='http://pp.baidu .com/ ';//모든 URL
get_pic($URL);
function get_pic($pic_url) {
- // 사진 바이너리 스트림 가져오기
- $data=CurlGet($pic_url);
- /*정규 표현식을 사용하여 이미지 링크 가져오기*/
- $pattern_src = '/<[img|IMG].*?src =[' |"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/'
- $num = preg_match_all($pattern_src, $data, $match_src);
- $arr_src=$match_src[1];//이미지 배열 가져오기
- get_name($arr_src);
echo "< br>완료!";
- return 0;
- }
/*이미지 유형을 가져와 파일과 동일한 디렉터리에 저장합니다*/
- function get_name( $pic_arr)
- {
- //사진 유형
- $pattern_type = '/(/.(jpg|bmp|jpeg|gif|png))/';
foreach($pic_arr as $pic_item){//각 사진의 주소를 가져오는 루프
- $num = preg_match_all($pattern_type, $pic_item, $match_type)
- $pic_name = get_unique ().$match_type [1][0];//마이크로초 타임스탬프 이름 변경
- //스트림 형식으로 사진 저장
- $write_fd = @fopen($pic_name,"wb");
- @fwrite( $write_fd, CurlGet($pic_item));
- @fclose($write_fd);
- echo "[OK]..!"
- }
- return 0; 🎜>} p>
//마이크로초 시간을 통해 고유 ID 가져오기
- function get_unique(){
- list($msec, $sec) =explore(" ",microtime ());
- return $sec.intval($msec*1000000);
- }
//웹 콘텐츠 캡처
- function CurlGet($url){
- $url =str_replace('&','&',$url);
- $curl = curl_init()
- curl_setopt($curl, CURLOPT_URL, $url); 컬, CURLOPT_HEADER, false );
//curl_setopt($curl, CURLOPT_REFERER,$url)
- curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0(호환; MSIE 6.0; SeaPort/1.2 ; Windows NT 5.1; InfoPath.2)");
- curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
- curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt ');
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0)
- $values = curl_exec($curl); );
- $ 값 반환;
- }
- ?
-
-
-
- 코드 복사
|