>  기사  >  백엔드 개발  >  Scrapy 배우기: 기초부터 고급까지

Scrapy 배우기: 기초부터 고급까지

PHPz
PHPz원래의
2024-02-19 19:07:06999검색

Scrapy 배우기: 기초부터 고급까지

Scrapy 설치 튜토리얼: 입문부터 숙련까지 특정 코드 예제가 필요합니다

소개:
Scrapy는 웹 페이지 크롤링, 데이터 추출, 데이터 정리 및 지속성을 수행하는 데 사용할 수 있는 강력한 Python 오픈 소스 웹 크롤러 프레임워크입니다. 일련의 작업을 기다립니다. 이 기사에서는 Scrapy 설치 프로세스를 단계별로 안내하고 Scrapy 프레임워크를 시작하는 단계부터 능숙해지는 데 도움이 되는 특정 코드 예제를 제공합니다.

1. Scrapy 설치
Scrapy를 설치하려면 먼저 Python과 pip가 설치되어 있는지 확인하세요. 그런 다음 명령줄 터미널을 열고 다음 명령을 입력하여 설치하십시오.

pip install scrapy

설치 프로세스에 다소 시간이 걸릴 수 있습니다. 잠시 기다려 주십시오. 권한 문제가 있는 경우 명령 앞에 sudo를 붙여보세요. sudo

二、创建Scrapy项目
安装完成后,我们可以使用Scrapy的命令行工具创建一个新的Scrapy项目。在命令行终端中,进入您想要创建项目的目录,并执行以下命令:

scrapy startproject tutorial

这将在当前目录下创建一个名为"tutorial"的Scrapy项目文件夹。进入该文件夹,我们可以看到如下的目录结构:

tutorial/
    scrapy.cfg
    tutorial/
        __init__.py
        items.py
        middlewares.py
        pipelines.py
        settings.py
        spiders/
            __init__.py

其中,scrapy.cfg是Scrapy项目的配置文件,tutorial文件夹是我们自己的代码文件夹。

三、定义爬虫
在Scrapy中,我们使用爬虫(spider)来定义抓取网页和提取数据的规则。在spiders目录下创建一个新的Python文件,命名为quotes_spider.py(可以根据实际需求自行命名),然后使用以下代码定义一个简单的爬虫:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('span small::text').get(),
            }

        next_page = response.css('li.next a::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

在上述代码中,我们创建了一个名为QuotesSpider的爬虫。其中,name属性是爬虫的名称,start_urls属性是我们希望抓取的第一个页面的URL,parse方法是爬虫默认的解析方法,用于解析网页和提取数据。

四、运行爬虫
在命令行终端中,进入项目的根目录下(即tutorial文件夹),并执行以下命令来启动爬虫并开始抓取数据:

scrapy crawl quotes

爬虫将会开始抓取初始URL中的页面,并根据我们定义的规则进行解析和提取数据。

五、保存数据
一般情况下,我们会将抓取到的数据进行保存。在Scrapy中,我们可以使用Item Pipeline来实现数据的清洗、处理和存储。在pipelines.py文件中,添加以下代码:

import json

class TutorialPipeline:
    def open_spider(self, spider):
        self.file = open('quotes.json', 'w')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "
"
        self.file.write(line)
        return item

在上述代码中,我们创建了一个名为TutorialPipeline的Item Pipeline。其中,open_spider方法在爬虫启动时会被调用,用于初始化文件;close_spider方法在爬虫结束时会被调用,用于关闭文件;process_item方法会对每个抓取到的数据项进行处理和保存。

六、配置Scrapy项目
settings.py文件中,可以对Scrapy项目进行各种配置。以下是一些常用的配置项:

  • ROBOTSTXT_OBEY:是否遵守robots.txt协议;
  • USER_AGENT:设置用户代理,在爬虫中可以模拟不同的浏览器;
  • ITEM_PIPELINES:启用和配置Item Pipeline;
  • DOWNLOAD_DELAY
  • 2. Scrapy 프로젝트 생성
설치가 완료되면 Scrapy의 명령줄 도구를 사용하여 새로운 Scrapy 프로젝트를 생성할 수 있습니다. 명령줄 터미널에서 프로젝트를 생성하려는 디렉터리로 이동하고 다음 명령을 실행합니다.

rrreee
이렇게 하면 현재 디렉터리에 "tutorial"이라는 이름의 Scrapy 프로젝트 폴더가 생성됩니다. 폴더에 들어가면 다음과 같은 디렉터리 구조를 볼 수 있습니다:

rrreee🎜 그 중 scrapy.cfg는 Scrapy 프로젝트의 구성 파일이고, tutorial 폴더는 우리의 자신의 코드 폴더. 🎜🎜3. 크롤러 정의🎜Scrapy에서는 스파이더를 사용하여 웹 페이지를 크롤링하고 데이터를 추출하는 규칙을 정의합니다. spiders 디렉터리에 새 Python 파일을 만들고 이름을 quotes_spider.py로 지정한 후(실제 필요에 따라 이름을 지정할 수 있음) 다음 코드를 사용하여 간단한 크롤러: 🎜 rrreee🎜위 코드에서는 QuotesSpider라는 이름의 스파이더를 만들었습니다. 그 중 name 속성은 크롤러의 이름이고, start_urls 속성은 크롤링하려는 첫 번째 페이지의 URL이며, parse 속성은 code> 방법은 크롤러의 기본값입니다. 구문 분석 방법은 웹 페이지를 구문 분석하고 데이터를 추출하는 데 사용됩니다. 🎜🎜4. 크롤러 실행 🎜명령줄 터미널에서 프로젝트의 루트 디렉터리(예: tutorial 폴더)를 입력하고 다음 명령을 실행하여 크롤러를 시작하고 데이터 크롤링을 시작합니다. 크롤러는 초기 URL에서 페이지 크롤링을 시작하고 우리가 정의한 규칙에 따라 데이터를 구문 분석하고 추출합니다. 🎜🎜5. 데이터 저장🎜 일반적인 상황에서는 캡처된 데이터가 저장됩니다. Scrapy에서는 Item Pipeline을 사용하여 데이터를 정리, 처리 및 저장할 수 있습니다. pipelines.py 파일에 다음 코드를 추가합니다. 🎜rrreee🎜위 코드에서는 TutorialPipeline이라는 항목 파이프라인을 만들었습니다. 그 중 open_spider 메소드는 크롤러가 파일 초기화를 시작할 때 호출되며, close_spider 메소드는 크롤러가 파일을 닫을 때 호출됩니다. process_item 메소드는 캡처된 각 데이터 항목을 처리하고 저장합니다. 🎜🎜6. Scrapy 프로젝트 구성🎜settings.py 파일에서 Scrapy 프로젝트에 대한 다양한 구성을 구성할 수 있습니다. 다음은 일반적으로 사용되는 구성 항목입니다. 🎜
  • ROBOTSTXT_OBEY: robots.txt 프로토콜을 준수할지 여부 🎜
  • USER_AGENT: 설정 사용자 에이전트, 크롤러에서 다양한 브라우저를 시뮬레이션할 수 있습니다. 🎜
  • ITEM_PIPELINES: 항목 파이프라인을 활성화하고 구성합니다. 🎜
  • DOWNLOAD_DELAY: 다운로드 지연을 설정하여 문제를 방지합니다. 대상 웹사이트의 피해 🎜🎜🎜 7. 요약 🎜위 단계를 거쳐 Scrapy 설치 및 사용이 완료되었습니다. 이 글이 여러분이 Scrapy 프레임워크를 시작하는 것부터 능숙해지는 데 도움이 되기를 바랍니다. Scrapy의 고급 기능과 사용법을 더 자세히 알아보고 싶다면 Scrapy 공식 문서를 참조하고 실제 프로젝트를 기반으로 연습하고 탐색해 보세요. 파충류 세계에서 성공을 기원합니다! 🎜

위 내용은 Scrapy 배우기: 기초부터 고급까지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.