위치, 파충류, 페이지 요소는 각각 위치, 간단한 처리 데이터 캡처 (요약)의 위치 : 프로젝트 파충류 케이스 II를 설명

1.scrapy 쉘 [URL을 크롤링]
에 위치 할 수있는 요소를 찾아 다시 당신에게 그가 매우 직관적 할 수 있는지 여부
: 2. 다음
response.xpath ( "// * 위에서 언급 @ ID = \"ml_001 \ "] / 표 / TBODY / TR [1] / TD [1] / A / 텍스트 ()")) (추출, 리턴 값을 타겟팅 할 수 있는지 성명.
수율 효과 : 등 반환

다음과 같이 전체 프로세스는 다음과 같습니다
1.CD Part6 (다음 하나의 프로젝트로 이동)
scrapy의 startproject [이름 1]
CD [이름 1]
scrapy의 genspider 재고 (크롤링 이름) [주소]
stock.py 파일 2., 첫 페이지를 열고, 데이터를 취득 할 필요가 XPath를 극복 클릭
계산서를 가진 콘솔에서 XPath는 경로를 얻은 후 : scrapy 쉘을 response.xpath을 [URL을 크롤링] scrapy 모드를 입력 한 다음 사용 ( "// * . [@id = \ "ml_001 \ "] / 테이블 / TBODY / TR [1] / TD [1] / A / 텍스트 () ") 추출 (); 유사한 문을 다음 데이터를 찾기 위해 데이터를 찾으려고, 다음과 같이 stock.py 파일의 코드를 쓸 수 코드는 다음과 같습니다
------------------------------------ --------------------------------------------
# - * - 코딩 : . 8 UTF - * -
가져 오기 Scrapy
URLLIB 구문 분석 가져 오기에서
가져 오기를 다시
에서 stock_spider.items 가져 오기 StockItem


클래스 StockSpider (scrapy.Spider) :
이름 = '재고'
allowed_domains = [ 'pycs.greedyai.com/']
start_urls = [ 'http://pycs.greedyai.com/']

: 데프 (자동 응답) 분석
. POST_URLS = response.xpath ( "// A / @ href를") 추출 ()를;
POST_URLS에서 POST_URL에 대한 :
수율 scrapy.Request (URL = parse.urljoin (response.url, POST_URL), 콜백 = self.parse_detail, dont_filter = 참)

parse_detail DEF (자동 응답) :
stock_item = StockItem ();
# 이사회 구성원의 이름
stock_item의 [ "이름"] = self.get_tc (응답);
# 잡아 성별 정보
stock_item [ "성"] = self.get_sex (응답) ;
# 연령 정보 크롤
; stock_item [ "나이"] = self.get_age (응답)
# 티커 기호
stock_item [ "코드"] = self.get_code (응답)
# 작업
stock_item [ "리더"] = self.get_leader (대응 렌 (stock_item의 [ "이름"]))
# 논리 파일 저장
수율 stock_item;

DEF get_tc (자동 응답)
tc_names = response.xpath ( "// * ID @ = \"ml_001 \ "] / 표 / TBODY / TR [1] / TD [1] / A / 텍스트 ()") .추출물();
tc_names를 반환;

DEF get_sex (자동 응답)
# // * ID @ = \ "ml_001 \"] / 표 / TBODY / TR [2] / TD [1] / DIV / 표 / THEAD / TR [2] / TD [ 1]
정보를 정기적 = response.xpath ( "// * @ 클래스 = \"인트로 \ "는] / 텍스트 ()") (추출).;
sex_list = [];
정보를 정기적으로 정보를 원하시면 :
시도 :
성 = re.findall을 ( "[男|女]"정보) [0]
sex_list.append (섹스);
(IndexError) 제외 :
계속;
sex_list를 반환;


DEF (자동 응답) get_age :
정보를 정기적 = response.xpath를 ( "// * @ 클래스 = \"인트로 \ "는] / 텍스트 ()") (추출).
age_list = [];
정보에 대한 정보를 정기적 :
시도 :
나이 = re.findall ( "\의 D +"정보) [0];
age_list.append (나이);
(IndexError) 제외 :
계속;
age_list를 반환;

데프 get_code (자동 응답)
. 정보를 정기적 = response.xpath ( '[3] / DIV [1] / DIV [2] / DIV [1] / H1 / A / @ 타이틀 / HTML / 바디 / DIV') 추출물 ();
code_list = [];
정보에 대한 정보를 정기적 :
시도 :
코드 = re.findall ( "\의 D +"정보) [0];
code_list.append (코드);
) (제외 :
계속;
code_list를 반환;

get_leader DEF (자기 응답 길이)
tc_leaders = response.xpath ( "// * @ 클래스 = \"TL \ "] / 텍스트 ()") (추출);
tc_leaders의 tc_leaders의 = [0 : 길이];
; tc_leaders 반환
----------------------------------------------- ---------------------------------
3. 통화에서 후 작성, main.py 전화 코드 으로는 다음과 같습니다
------------------------------------------------ --------------------------------
실행] scrapy.cmdline 가져 오기에서
가져 오기 SYS
가져 오기 OS
서면 # 디버그
의 sys.path를 ;으로 .Append ((__ FILE__))와 os.path.dirname (os.path.abspath)
# Exec에서 ( "Scrapy", "크롤링", "tonghuashun");
# 실행 ([ "Scrapy", "크롤링", "tonghuashun "])
# 실행 (["Scrapy ","크롤링 ","tonghuashun; "])
scrapy", "크롤링", "주식"]) ([실행 ";
두 개의 매개 변수가 고정되어 # 전에 마지막 매개 변수는 자신의 창조물의 이름입니다

-------------------------------------------------- ------------------------------
후 4.main 서면이 items.py는 다음과 같은 코드를 작성 후, 객체 위해 항목과 stock.py을 통합합니다. items.py 크롤링 할 데이터를 지정
---------------------------------------- ----------------------------------------
가져 오기 scrapy의
클래스 StockSpiderItem (scrapy.Item) :
: 여기에 귀하의 # 항목에 대한 배경 화면과 같은 필드를 정의
# 이름 = scrapy.Field ()
패스
클래스 StockItem (scrapy.Item 일) :
이름은 scrapy.Field이 = ();
scrapy.Field = () 성별,
나이 = scrapy.Field을 () ;
코드 scrapy.Field = ();
지도자 scrapy.Field = ();
참고 : 이름 및 재고 유지를
------------------------ -------------------------------------------------- ------
5. pipeplines.py 주 역할 pipeplines.py 처리 된 데이터를 표시하는 제조 방법에 따라
------------------------- -------------------------------------------------- -----
클래스 StockSpiderPipeline (객체) :
DEF process_item (자체, 항목, 스파이더) :
반환 항목
클래스 StockPipeline (객체) :
DEF process_item (자체, 항목, 스파이더) :
인쇄 (항목)
반환 항목
----- -------------------------------------------------- -------------------------
6. 마지막으로, 우리는 열린 setting.py을 ITEM_PIPELINES하고 다음과 같이 자신의 글 클래스 코드는 추가해야합니다
- -------------------------------------------------- -----------------------------
ITEM_PIPELINES = {
'stock_spider.pipelines.StockSpiderPipeline'300
'stock_spider.pipelines.StockPipeline' 1
}
-------------------------------------------------- ------------------------------

요약 : 코드를 작성하는 과정에서 같은 몇 가지 문제가 발생
예외 처리 문을 추가 1. 코드를

 

2.이 stock.py 파일의 범주 파일에서 소개 items.py,이 클래스의 모든 패키지에 대한 다음 정보는 모든 내부 배치

 

 

3. 각 클래스가 도입되어야 응답

크롤이있을 때 4. 제목 페이지입니다

일반적 5. / 텍스트 ()의

6. 케이스를 반환하고, 마지막으로 수율이 stock_item 될 것입니다 반환

 

추천

출처www.cnblogs.com/jxxgg/p/11666844.html