English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python의 Scrapy 스크래핑 프레임워크 설치 및 간단한 사용 설명

기록: python 크롤러 프레임워크의 이름을 이미 들었습니다. 최근 몇 일 동안 Scrapy 크롤러 프레임워크를 공부했으며, 이해한 내용을 공유하려고 합니다. 설명이 부적절하다면, 고인들이 수정해 주세요.

1. Scrapy 初窥

Scrapy는 웹 사이트 데이터를 크롤링하고 구조화된 데이터를 추출하기 위해 작성된 애플리케이션 프레임워크입니다. 데이터 매ining, 정보 처리 또는 역사 데이터 저장 등 다양한 프로그램에 적용할 수 있습니다.

최초에는페이지 크롤링(정확히는,네트워크 크롤링)를 설계한 것으로, API가 반환하는 데이터(예를 들어Amazon Associates Web Services) 또는 일반적인 웹 크롤러.

이 문서는 Scrapy 뒤에 있는 개념을 소개하여 Scrapy가 필요한지 확인하고, 작동 방식에 대해 이해하도록 도와줍니다.

프로젝트를 시작하려고 준비가 되었을 때, 다음을 참조할 수 있습니다.기초 튜토리얼

2. Scrapy 설치 소개

Scrapy 프레임워크 실행 플랫폼 및 관련 보조 도구

  1. Python2.7(Python 최신 버전3.5여기서는2.7버전)
  2. Python 패키지: pipandsetuptools. pip은 setuptools에 의존하며, 설치되지 않았다면 자동으로 setuptools를 설치합니다.
  3. lxml. 대부분의 Linux 배포판은 lxml를 기본적으로 제공합니다. 필요하다면 확인하세요.http://lxml.de/installation.html
  4. OpenSSL은 Windows(플랫폼 설치 지침 참조) 외의 모든 시스템에서 제공됩니다.

Scrapy를 설치할 수 있습니다. pip을 사용하여 설치하는 것이 좋습니다.(Python 패키지를 설치하는 데 pip을 사용하는 것이 좋습니다.).

pip install Scrapy

Windows 설치 프로세스:

1Python 설치 2.7이후로, PATH 환경 변수를 수정하여 Python의 실행 파일 및 추가 스크립트를 시스템 경로에 추가해야 합니다. 다음 경로를 PATH에 추가하세요:

C:\Python27\;C:\Python27\Scripts\;

또한, cmd 명령어를 사용하여 Path를 설정할 수 있습니다:

c:\python27\python.exe c:\python27\tools\scripts\win_add2path.py

설치 및 구성이 완료되면, 명령어 python --version을 통해 설치된 Python 버전을 확인합니다。(그림 참조)

2다음에서http://sourceforge.net/projects/pywin32/installpywin32

다운로드된 버전이 시스템과 일치하는지 확인하세요(win32또는 amd64

다음에서https://pip.pypa.io/en/latest/installing.htmlpip 설치

3명령 프롬프트 창을 엽니다. pip이 올바르게 설치되었는지 확인하세요:

pip --버전

4현재까지 Python 2.7 pip이 올바르게 실행될 수 있음을 확인한 후, Scrapy를 설치합니다:

pip install Scrapy

이제 Windows에서 Scrapy 설치가 완료되었습니다.

3. Scrapy 초보자 가이드

1cmd에서 Scrapy 프로젝트를 생성합니다.

scrapy startproject tutorial

H:\python\scrapyDemo>scrapy startproject tutorial
New Scrapy project 'tutorial', using template directory 'f:\\python27\\lib\\site-packages\\scrapy\\templates\\project', 생성된 위치:
  H:\python\scrapyDemo\tutorial
첫 번째 스파이를 시작하려면:
  cd tutorial
  scrapy genspider example example.com

2、파일 디렉토리 구조는 다음과 같습니다:

scrapy 프레임워크 구조를 분석합니다:

  1. scrapy.cfg: 프로젝트의 설정 파일입니다。
  2. tutorial/: 이 프로젝트의 python 모듈입니다. 이곳에 코드를 추가합니다.
  3. tutorial/items.py: 프로젝트의 item 파일입니다。
  4. tutorial/pipelines.py: 프로젝트의 pipelines 파일입니다。
  5. tutorial/settings.py: 프로젝트의 설정 파일입니다。
  6. tutorial/spiders/: 스파이더 코드를 배치하는 디렉토리를 표시합니다。

3、간단한 크롤러 작성

1、item.py에서 캡쳐할 페이지의 필드 인스턴스를 구성합니다。

# -*- 코딩: utf-8 -*-
# 여기서 캡쳐된 항목의 모델을 정의합니다
#
# 문서를 참조하세요:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
from scrapy.item import Item, Field
class TutorialItem(Item):
  title = Field()
  author = Field()
  releasedate = Field()

2、在tutorial/spiders/spider.py에 캡쳐할 웹사이트 및 각 필드별로 캡쳐할 내용을 작성합니다.

# -*-coding:utf-8-*-
import sys
from scrapy.linkextractors.sgml import SgmlLinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from tutorial.items import TutorialItem
reload(sys)
sys.setdefaultencoding("utf-8)
class ListSpider(CrawlSpider):
  # 크롤러 이름
  name = "tutorial"
  # 다운로드 지연 설정
  download_delay = 1
  # 허용 도메인
  allowed_domains = ["news.cnblogs.com"]
  # 시작 URL
  start_urls = [
    "https://news.cnblogs.com"
  ]
  # 캡쳐 규칙, callback 없이는 해당 클래스 URL에 대해 재귀적으로 캡쳐합니다
  rules = (
    ////page/
    ////+
  
  
  
    
    
    //div[@id="news_title"]-8')
    item['title'] = title
    author = response.selector.xpath('//div[@id="news_info"]/span/a/text()')[0].extract().decode('utf-8')
    item['author'] = author
    releasedate = response.selector.xpath('//div[@id="news_info"]//text()')[0].extract().decode(
      'utf-8')
    item['releasedate'] = releasedate
    yield item

3、在tutorial/pipelines.py에 데이터 저장하다.

# -*- 코딩: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json
import codecs
class TutorialPipeline(object):
  def __init__(self):
    self.file = codecs.open('data.json', mode='wb', encoding='utf-8')#데이터 저장하기 data.json
  def process_item(self, item, spider):
    line = json.dumps(dict(item)) + "\n"
    self.file.write(line.decode("unicode_escape"))
    return item

4、tutorial/settings.py에서 실행 환경을 설정합니다。

# -*- 코딩: utf-8 -*-
BOT_NAME = 'tutorial'
SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
# 쿠키를 차단하여 ban되지 않도록 합니다
COOKIES_ENABLED = False
COOKIES_ENABLES = False
# Pipeline 설정, 파일에 데이터를 쓰는 구현
ITEM_PIPELINES = {
  'tutorial.pipelines.TutorialPipeline': 300
}
# 스파이더가 크롤링할 최대 깊이를 설정합니다
DEPTH_LIMIT = 100

5、main 파일을 새로 만들어 스파이더 코드를 실행합니다。

from scrapy import cmdline
cmdline.execute("scrapy crawl tutorial".split())

결국, main.py를 실행한 후 data.json 파일에서 수집된 데이터의 JSON 데이터를 얻습니다.

이것이 본문의 모든 내용입니다. 많은 도움이 되었기를 바랍니다. 또한, 나아가 튜토리얼의 지지를 부탁드립니다.

선언: 본문 내용은 인터넷에서 가져왔으며, 저작권은 원저자에게 있습니다. 인터넷 사용자가 자발적으로 기여하고 업로드한 내용으로, 이 사이트는 소유권을 가지지 않으며, 인공 편집을 하지 않았으며, 관련 법적 책임을 부담하지 않습니다. 저작권 문제가 있을 경우 메일을 notice#w로 보내 주세요.3codebox.com(메일을 보내면, #을 @으로 변경해 주세요. 신고하고 관련 증거를 제공하시면, 해당 내용이 사실이 확인되면 즉시 해당 내용을 제거합니다。)

추천 합니다