현재 위치 - 회사기업대전 - 기업 정보 공시 - Ele.me 공식 웹사이트 데이터를 크롤링하는 중

Ele.me 공식 웹사이트 데이터를 크롤링하는 중

Scrapy 프레임워크의 예비 적용

아침에 scrapy 프레임워크를 구성했고, 오후에 테스트하기 위해 작은 데모를 만들고 싶었습니다. 결과가 입증되었습니다. 그 스크래피는 정말 강력해요. 마스터할 때까지 마스터하면 못 오르는 데이터는 없을 것 같아요, 오(∩_∩)O 하하~.

다음 단계는 scrapy의 성공적인 설치 및 구성을 기반으로 합니다.

1. 새 Scrapy 프로젝트를 생성합니다.

cmd 콘솔 인터페이스를 여시겠습니까?< / p>

입력: scrapy startproject myScrapy

생성된 프로젝트에 포함된 파일은 다음과 같습니다.

__init__.py: 프로젝트의 초기화 파일?

items.py: 프로젝트의 대상 파일?

pipelines.py: 프로젝트의 파이프라인 파일?

settings.py: 프로젝트의 설정 파일 ?

spiders/: 크롤러 코드를 저장하는 파일?

spiders/__init__.py: 크롤러의 초기 파일

항목 정의

Items는 크롤러 코드를 저장하는 파일입니다. 검색된 데이터의 컨테이너는 Python 사전과 유사하게 사용됩니다. 이는 ORM의 매핑 관계와 유사한 철자 오류로 인해 발생하는 정의되지 않은 필드 오류를 방지하기 위한 추가 보호 메커니즘을 제공합니다.

이것은 items.py의 기본 코드입니다:

import scrapyclass mySpiderItem(scrapy.Item):

#name = scrapy.Field() p>

pass12345

수정합니다: (크롤링해야 할 데이터는 이름, 직업 및 세부 정보입니다.)

import scrapyclass MyspiderItem(scrapy.Item):

# 크롤링해야 하는 데이터에 포함된 필드입니다.

name = scrapy.Field()

title = scrapy.Field()

p>

info = scrapy.Field() pass123456789

3. 크롤러 파일 생성

?demo_spider.py?.?

그런 다음 NotePad는 파일을 열고 다음 코드를 추가합니다:

import scrapy#Reference MyspiderItem in item.py in the mySpider 디렉토리 from mySpider.items import MyspiderItemclass Demo_Spider(scrapy.Spider):

#크롤러 이름, 이 값은 고유해야 합니다.

name = "demo"

#크롤러의 크롤링 도메인(Chuanzhi 데이터를 가져오고 싶습니다)

allowed_domains = ["itcast.cn"] #첫 번째 요청 배치의 주소인 시작 URL 목록

start_urls = [ "htt/channel/teacher.shtml"

] #pase 메소드는 반환된 응답 데이터를 구문 분석하고, 추출할 데이터 항목을 얻고, URL의 추가 처리가 필요한 요청 객체를 생성하는 일을 담당합니다.

def pars(self, response):

#획득된 데이터 세트

node_list = response.xpath("//div[@class='li_txt ' ]")

node_list의 노드:

item = MyspiderItem() #.extract() xpath 객체를 유니코드 문자열로 변환

name = node.xpath ("./h3/text()").extract()

title = node.xpath("./h4/text()").extract()

info = node.xpath("./p/text()").extract()

항목['name'] = 이름[0]

항목[' title'] = title[0]

item['info'] = info[0] #yield: 항목 데이터를 얻은 후 루프를 일시 중지한 다음 이를 파이프라인에 제공하고 루프를 계속합니다.

yield item12345678910111213141516171819202122232425262728293031

4. 설정 파일 수정

setting.py 파일을 열고 ROBOTSTXT_OBEY를 false로 수정하여 일부 웹사이트에서 크롤러를 금지하고 크롤링할 수 없도록 합니다. 데이터.

# robots.txt 규칙 준수ROBOTSTXT_OBEY = False12

파이프라인의 우선순위를 정의하는 ITEM_PIPELINES의 주석 처리를 제거하세요. 값이 작을수록 우선순위가 높아집니다.

ITEM_PIPELINES = { 'Tencent.pipelines.TencentPipeline': 300,

}123

5. 파이프라인 실행 파일 수정

기본 파이프라인 파일입니다.

import jsonclass MyspiderPipeline(object):

def process_item(self, item, spider):

pass 12345

수정합니다.

import jsonclass MyspiderPipeline(object):

def __init__(self):

self.f = open("demo.json", "wb ") #이 메서드는 필요합니다

def process_item(self, item, spider):

content = json.dumps(dict(item), verify_ascii = False) " , \n"

self.f.write(content.encode("utf-8")) 반환 항목 def colse_spider(self, spider):

self.f.close ( )1234567891011121314

파이프라인 이벤트가 처음 실행되면 데모.json 파일을 생성하고 엽니다.

파이프라인 이벤트가 종료되면 파일을 닫도록 colse_spider 메소드를 추가하세요.

process_item 메소드를 수정하여 Demo_Spider에서 얻은 아이템 데이터를 데모.json 파일에 저장합니다.

5. 스파이더 시작

mySpider 디렉터리에 크롤링된 데이터 파일을 저장할 데이터 폴더를 만듭니다.

입력: mkdir data, 다음: cd data/?

명령 사용: scrapy creep 데모?

완료 세부 정보를 볼 수 있습니다. 실행.

필수 데이터는 데모.json 파일에서 가져옵니다.

이로써 웹사이트 데이터를 크롤링하는 간단한 예가 완성되었습니다. 심층적인 연구를 통해 우리는 확실히 매우 강력한 데이터 크롤링 기능을 달성할 수 있을 것이라고 믿습니다.

copyright 2024회사기업대전