四时宝库

程序员的知识宝库

Python爬虫Scrapy库的使用入门?(scrapy爬虫实例)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从 APIs 中抓取数据或通用的Web抓取任务。Scrapy提供了一个简洁的方式来定义和控制网络抓取的整个过程,包括从URL生成请求、处理页面响应到解析内容和存储数据。

下面我们就来通过一个入门的示例代码来看看如何使用Scrapy实现数据爬虫操作。

安装Scrapy

首先,你需要使用pip对Scrapy进行安装,如下所示。

pip install scrapy

创建Scrapy项目

接下来我们可以使用Scrapy中的startproject命令,创建一个新的爬虫项目,如下所示。

scrapy startproject myproject

这个命令会创建一个名为myproject的文件夹,其中包含Scrapy的基本项目结构,如下所示。

myproject/
    scrapy.cfg           # 项目的配置文件
    myproject/           # Python 模块,包含你的爬虫代码
        __init__.py
        items.py         # 定义要抓取的数据结构
        middlewares.py   # 定义中间件
        pipelines.py     # 定义数据处理流程
        settings.py      # 配置文件
        spiders/         # 你定义爬虫的地方
            __init__.py

创建爬虫

接下来,我们可以进入到spiders目录中,然后创建一个名为example_spider.py的爬虫文件文件,内容如下所示。

import scrapy

class ExampleSpider(scrapy.Spider):
    name = "example"  # 爬虫的名称,用于命令行运行
    start_urls = [
        'http://quotes.toscrape.com/page/1/',  # 起始URL
    ]

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

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

接下来我们可以通过如下的命令将这个爬虫项目运行起来,如下所示。

scrapy crawl example

当然我们也可以将爬虫数据存储下来,可以通过使用Scrapy的命令行参数将抓取的数据保存到文件中。如下所示。

scrapy crawl example -o quotes.json

这个命令会将爬取的数据保存到quotes.json文件中。

自定义爬虫行为

当然,我们也可以通过编辑settings.py文件来对爬虫行为进行自定义的操作,例如我们设置下载延迟、防止爬虫被封禁等。

例如,在 settings.py 中添加以下内容来设置下载延迟

DOWNLOAD_DELAY = 2  # 每次请求间隔2秒

在pipelines.py文件中定义数据处理的流程操作。数据通过yield语句被传递到了数据处理管道,数据处理管道可以对数据进行清洗、存储等操作,如下所示。

class MyPipeline:
    def process_item(self, item, spider):
        # 处理数据
        item['text'] = item['text'].upper()
        return item

然后我们可以在settings.py 中启用管道,如下所示。

ITEM_PIPELINES = {
    'myproject.pipelines.MyPipeline': 300,
}

中间件

中间件是Scrapy中在请求和响应过程中处理流程钩子操作。我们也可以通过自定义中间件来修改请求或响应,处理代理,添加自定义header等操作,如下所示。我们可以在middlewares.py 文件中定义自定义的中间件,然后在settings.py中启用它们。

class MyCustomMiddleware:
    def process_request(self, request, spider):
        # 修改请求
        request.headers['User-Agent'] = 'My Custom User-Agent'

启动配置

DOWNLOADER_MIDDLEWARES = {
    'myproject.middlewares.MyCustomMiddleware': 543,
}

总结

Scrapy是一个功能强大且灵活的爬虫框架,适用于各种复杂的网页数据提取任务。我们可以通过深入学习官方文档和示例代码来深入了解和掌握Scrapy的使用,来解决各种实际过程中遇到的问题。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接