PHP 채집업자 정보 및 채집방법 개술(상)

최근 전자상거래 시장에서 많은 상인들의 내비게이션이 있는데 그 안에서 대량의 상인 정보를 수집했다. 만약에 전자상거래에 종사한다면 이런 정보는 여전히 유용하다.내가 최근에 하고 있는 프로젝트에 이런 정보를 써야 하는데, 너는 다른 사람에게 달라고 해서는 안 된다. 이렇게 하면 다른 사람이 주지 않는다.그래서 혼자 기어갈 수밖에 없었어요.예전에도 몇 개의 유사한 파충류가 한 사이트를 기어오르는 정보를 썼는데, 총괄적으로 말하면
첫째: 발굴할 자원을 확정한다.
둘째: 자원에 대한 자원 주소 확인하기(url)
셋째: 자원 주소 규칙을 분석하고 찾아낸다.
넷째: 자원 주소를 잡는다.
다섯째: 주소의 내용을 순환해서 얻는다
여섯째: 캡처 내용 입고와 일치
여섯째: 완결, 데이터 캡처 사용.
지난번에 찾은 것은 한 차례의 상인 정보로 대략 5000개의 상인 정보가 있다.당시 매칭은 정규 매칭을 사용했는데 전체 html의 정규는 때때로 비교적 번거롭다.이번에는 phpquery를 사용합니다.
이번에 한 사이트(shop.yijia.com)의 데이터 업체 정보는 10만 개에 달하는데, 이번에는 같은 수요나 유사한 수요를 가진 참고 교류 학습을 위해 아이디어와 관련 코드를 여러분에게 공유합니다.이번에 찾은 데이터가 필요하다는 메시지가 있으면 줄 수 있어요.
기어오르기 시작......

첫째:


기어오르는 자원을 확정하다.내가 찾고자 하는 것은 상인 정보이다. 이 사이트는'상점이 500개가 넘고 만여 개의 전자상거래 사이트에서 23개의 분류를 정선했다. 마지막으로 나는 90585개의 상인을 찾았다. 중복된 무효를 제거하면 대략 50000+의 유효한 상인 목록이 있다. 그러면 내가 찾고자 하는 것은 바로 이런 상인 정보이다. 만약에 모든 상인이 리코더라면 나는 대략 10만 개의 데이터를 찾아야 한다.

두 번째:


리소스 주소를 확인합니다.한 사이트의 상점 주소는 shop에 있습니다.yijia.com.상인들은 의류 액세서리, 미용 린스, 디지털 제품 등 2급 분류로 나뉜다.1급 아래에는 2급 분류가 있고, 2급 아래에는 바로 상인 목록이 있으며, 한 페이지에 10개가 있다.일가망의 법칙은 찾기 쉽다
저희가 예를 찾아서 분석을 해보도록 하겠습니다.
1 레벨 클래스:
의상 액세서리:http://shop.yijia.com/listshop/index_1/
미용 린스:http://shop.yijia.com/listshop/index_2/
디지털 제품:http://shop.yijia.com/listshop/index_1048/
한 종류의 큰 종류는 사실 겨우 10여 개밖에 없는데, 나는 기어오르지 않고 직접 수동으로 추가했다.(노동을 간소화하기 위해 기어오르는 것이고, 10여 개의 데이터를 위해 파충류를 쓰면 가치가 없다)
2급 유형: 의류 액세서리 아래 분류(여장, 여자신발, 여자가방, 남자옷, 남자신발, 남자가방)를 예로 들면,
여성복,http://shop.yijia.com/listshop/index_1_25/
여자 신발:http://shop.yijia.com/listshop/index_1_26/
여자 가방:http://shop.yijia.com/listshop/index_1_27/
명백한 법칙, 여기서 자세히 말하지만, 만약 이것이 관찰되지 않는다면, 그것은 채집하지 마라
그리고 다음 페이지를 분류해서 저희가 여장을 예를 들게요.
첫 페이지:http://shop.yijia.com/listshop/index_1_25_0_0_1/
페이지 2:http://shop.yijia.com/listshop/index_1_25_0_0_2/
3페이지:http://shop.yijia.com/listshop/index_1_25_0_0_3/
 

셋째:


자원 주소 규칙을 분석하면 여기는 비교적 간단한 규칙이다. 사실 일반적으로 사이트의 자원 유형을 통일하면 자원 주소의 차이가 크지 않다.
관건은 마지막 인자 indexx_y_0_0_z
그중에 x1급분류 y2급분류z페이지는 그중에 0이 왜 있는지 나도 모르겠다.관찰 추출 분석 후 모두 이렇다.
넷째: 자원 주소를 캡처하고 캡처한 후에 우리는 마음대로 저장할 수 없다. 가장 좋은 것은 분류하여 저장하는 것이다. 여기서 로컬 데이터베이스의 디자인을 디자인하고 참고할 수 있는 추측을 할 수 있다.
첫 번째 단계: 1급 분류 입고, 내가 여기에 수동으로 복사한 것은 어쨌든 10여 개밖에 없다.
2단계: 2단계 분류를 잡는다. 여기서 페이지 구조를 살펴보면 1급 분류 페이지의 내용 중 페이지 구조가 1급 분류 페이지의 div와 비슷하다는 것을 알 수 있다. 2단계 분류를 저장한 디렉터리 트리의 dd id= "dd open 1"안의
   
   
   
   
  1. <dd id="dd_open_1">  
  2. <ul>  
  3.     <li class="sel"><a href="/listshop/index_1_25/" target="_self"> a>li> 
  4.     <li><a href="/listshop/index_1_26/" target="_self"> a>li> 
  5.     <li><a href="/listshop/index_1_27/" target="_self"> a>li> 
  6.     <li><a href="/listshop/index_1_28/" target="_self"> a>li> 
  7.     <li><a href="/listshop/index_1_29/" target="_self"> a>li> 
  8.     <li><a href="/listshop/index_1_30/" target="_self"> a>li> 
  9.     <li><a href="/listshop/index_1_31/" target="_self"> a>li> 
  10.     <li><a href="/listshop/index_1_32/" target="_self"> a>li> 
  11.     <li><a href="/listshop/index_1_33/" target="_self"> a>li> 
  12.     <li><a href="/listshop/index_1_34/" target="_self"> a>li> 
  13.     <li><a href="/listshop/index_1_1086/" target="_self"> a>li> 
  14. ul>  
  15. dd> 

 
그러면 좋은 법칙을 찾았습니다. 1급 페이지마다 id가 dd 이면...open_1 안에 ul이면 돼요.
순환은 한 단계로 분류된 페이지 내용을 캡처한 다음에 안에 있는 리와 대응하는href
그리고 2급 분류에 대응하는 페이지 수량.
2단계 분류에 들어가서 여기를 보면 다른 방법이 있어요. 그런데 이거 하나만 찾으면 돼요. 제 거 말씀드릴게요. 만약에 페이지가 있으면 반드시 페이지가 있어요. 그러면 페이지의 URL 중 마지막 파라미터는
(int a)/그럼 a는 이 페이지의 수량입니다
예시를 하나 보겠습니다.
   
   
   
   
  1. <div class="pager cardlist03"><a href="/listshop/index_1_25_0_0_1/" target="_self"> a> 
  2.     <a href="/listshop/index_1_25_0_0_1/" target="_self"> a> 
  3.     <a href="/listshop/index_1_25_0_0_1/" target="_self">1a> 
  4.      2 <a href="/listshop/index_1_25_0_0_3/" target="_self">3a> 
  5.     <a href="/listshop/index_1_25_0_0_4/" target="_self">4a> 
  6.     <a href="/listshop/index_1_25_0_0_5/" target="_self">5a> 
  7.     <a href="/listshop/index_1_25_0_0_3/" target="_self"> a> 
  8.     <a href="/listshop/index_1_25_0_0_500/" target="_self"> a> 
  9.       500    
  10.      
  11. div> 

제 방법은divclass="pager"의 이걸 얻고 안에 있는 마지막 a탭을 얻는 거예요.
그의 속성 가져오기href는explode로 이미 ''자르고 얻은 수치는 그가 없으면 기본적으로 한 페이지가 있고 있으면 해당하는 페이지가 된다.
그리고 마지막 상가 페이지에는 우리가 필요로 하는 두 가지 정보, 상가 프로필과 URL이 있습니다.로고는 상인 리스트 페이지에서 얻을 수 있습니다.이거 코드 보자고 했잖아.
 
이렇게 해서 우리는 모든 자원 경로를 얻었다(규칙, 모든 분류를 내놓는다)
 
다음은 채집 단계입니다.
여기 더 이상 말 안 하고 코드로 바로 갈게요.
참고:
첫째: 여기는 pc에서 뛰기 때문에 세 개의 작은 스크립트가 나뉜다.서버에서 합성해서 뛸 수 있다면
둘째, 악의적이고 폭력적인 채집을 하지 마라. 이렇게 하면 모두에게 좋지 않다. DDOS**가 당신의 IP를 차단하거나 사이트 서버에 너무 큰 압력을 주어 붕괴될 것이다.처음부터 IP가 차단됐어.
코드 관련
데이터베이스 구조
 
   
   
   
   
  1. 'yj_shop_category', 'CREATE TABLE `yj_shop_category` ( 
  2.   `sc_id` int(10) NOT NULL AUTO_INCREMENT COMMENT ' id'
  3.   `sc_name` varchar(255) NOT NULL COMMENT ' '
  4.   `sc_parent_id` int(10) NOT NULL DEFAULT '0' COMMENT ' id'
  5.   `sc_url` varchar(255) NOT NULL COMMENT ' url'
  6.   `sc_page_num` int(6) NOT NULL COMMENT ' '
  7.   `sc_current_page_num` int(6) NOT NULL DEFAULT '1' COMMENT ' '
  8.   `sc_add_time` int(10) NOT NULL COMMENT ' '
  9.   `is_grab` tinyint(1) NOT NULL DEFAULT '0' COMMENT ' '
  10.   PRIMARY KEY (`sc_id`) 
  11. ) ENGINE=InnoDB AUTO_INCREMENT=126 DEFAULT CHARSET=utf8' 
  12.  
  13. 'yj_shop_information', 'CREATE TABLE `yj_shop_information` ( 
  14.   `si_id` int(10) NOT NULL AUTO_INCREMENT COMMENT ' '
  15.   `si_name` varchar(255) NOT NULL COMMENT ' '
  16.   `si_cat_id` int(10) NOT NULL COMMENT ' '
  17.   `si_shop_url` varchar(255) NOT NULL COMMENT ' url'
  18.   `si_true_url` varchar(255) NOT NULL COMMENT ' url'
  19.   `si_yijia_url` varchar(255) NOT NULL COMMENT ' '
  20.   `si_logo_url` varchar(255) NOT NULL COMMENT 'logo '
  21.   `si_desc` text NOT NULL COMMENT ' '
  22.   `si_front_desc` text NOT NULL COMMENT ' '
  23.   `si_add_time` int(10) NOT NULL COMMENT ' '
  24.   PRIMARY KEY (`si_id`) 
  25. ) ENGINE=InnoDB AUTO_INCREMENT=86367 DEFAULT CHARSET=utf8' 
  26.  

이 편은 여기까지 하고 다음 편은 구체적인 채집 코드를 알려드릴게요.
 
PHP 채집업자 정보 및 채집방법 개술(하)

좋은 웹페이지 즐겨찾기