Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Belajar Scrapy: Asas kepada Lanjutan

Belajar Scrapy: Asas kepada Lanjutan

PHPz
PHPzasal
2024-02-19 19:07:06957semak imbas

Belajar Scrapy: Asas kepada Lanjutan

Tutorial pemasangan Scrapy: dari kemasukan ke kemahiran, contoh kod khusus diperlukan

Pengenalan:
Scrapy ialah rangka kerja perangkak web sumber terbuka Python yang berkuasa yang boleh digunakan untuk merangkak halaman web, mengekstrak data, melakukan pembersihan data dan ketekunan Tunggu beberapa siri tugasan. Artikel ini akan membawa anda langkah demi langkah melalui proses pemasangan Scrapy dan menyediakan contoh kod khusus untuk membantu anda bermula daripada menjadi mahir dalam rangka kerja Scrapy.

1. Pasang Scrapy
Untuk memasang Scrapy, pastikan anda telah memasang Python dan pip. Kemudian, buka terminal baris arahan dan masukkan arahan berikut untuk memasang:

pip install scrapy

Proses pemasangan mungkin mengambil sedikit masa, harap bersabar. Jika anda menghadapi masalah kebenaran, cuba letakkan awalan perintah dengan 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. Buat projek Scrapy
Selepas pemasangan selesai, kita boleh menggunakan alat baris arahan Scrapy untuk mencipta projek Scrapy baharu. Dalam terminal baris arahan, pergi ke direktori tempat anda ingin mencipta projek dan laksanakan arahan berikut:

rrreee
Ini akan mencipta folder projek Scrapy bernama "tutorial" dalam direktori semasa. Memasuki folder, kita dapat melihat struktur direktori berikut:

rrreee🎜 Antaranya, scrapy.cfg ialah fail konfigurasi projek Scrapy, dan folder tutorial adalah kami. folder Kod sendiri. 🎜🎜3. Tentukan perangkak🎜Dalam Scrapy, kami menggunakan labah-labah untuk menentukan peraturan untuk merangkak halaman web dan mengekstrak data. Cipta fail Python baharu dalam direktori spiders, namakannya quotes_spider.py (anda boleh menamakannya mengikut keperluan sebenar anda), dan kemudian gunakan kod berikut untuk mentakrifkan perangkak mudah: 🎜 rrreee🎜Dalam kod di atas, kami mencipta labah-labah bernama QuotesSpider. Antaranya, atribut name ialah nama perangkak, atribut start_urls ialah URL halaman pertama yang ingin kami rangkak dan parse kaedah kod> ialah lalai untuk perangkak Kaedah penghuraian digunakan untuk menghuraikan halaman web dan mengekstrak data. 🎜🎜4. Jalankan perangkak 🎜Dalam terminal baris arahan, masukkan direktori akar projek (iaitu folder <code>tutorial) dan laksanakan arahan berikut untuk memulakan perangkak dan mula merangkak data: 🎜rrreee🎜 Crawler Akan mula merangkak halaman dalam URL awal dan menghuraikan serta mengekstrak data mengikut peraturan yang kami tetapkan. 🎜🎜5. Simpan data🎜Dalam keadaan biasa, kami akan menyimpan data yang ditangkap. Dalam Scrapy, kita boleh menggunakan Item Pipeline untuk membersihkan, memproses dan menyimpan data. Dalam fail pipelines.py, tambahkan kod berikut: 🎜rrreee🎜Dalam kod di atas, kami telah mencipta Item Pipeline bernama TutorialPipeline. Antaranya, kaedah open_spider akan dipanggil apabila perangkak mula memulakan fail kaedah close_spider akan dipanggil apabila perangkak berakhir untuk menutup fail; process_item Kaedah akan memproses dan menyimpan setiap item data yang ditangkap. 🎜🎜6 Konfigurasikan projek Scrapy🎜Dalam fail settings.py, anda boleh mengkonfigurasi pelbagai konfigurasi untuk projek Scrapy. Berikut ialah beberapa item konfigurasi yang biasa digunakan: 🎜
  • ROBOTSTXT_OBEY: sama ada untuk mematuhi protokol robots.txt 🎜
  • USER_AGENT: tetapkan ejen pengguna, dalam perangkak Pelayar yang berbeza boleh disimulasikan; kerosakan pada laman web sasaran Tekanan yang berlebihan 🎜🎜🎜 7. Ringkasan 🎜Melalui langkah di atas, kami telah menyelesaikan pemasangan dan penggunaan Scrapy. Saya harap artikel ini dapat membantu anda bermula daripada menjadi mahir dalam rangka kerja Scrapy. Jika anda ingin mempelajari lebih lanjut fungsi lanjutan dan penggunaan Scrapy, sila rujuk dokumentasi rasmi Scrapy dan berlatih serta meneroka berdasarkan projek sebenar. Saya doakan anda berjaya dalam dunia reptilia! 🎜

Atas ialah kandungan terperinci Belajar Scrapy: Asas kepada Lanjutan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn