Scrapy 简单入门

简介

Scrapy主要包括了以下组件:

引擎(Scrapy Engine)

Item 项目

调度器(Scheduler)

下载器(Downloader)

爬虫(Spiders)

项目管道(Pipeline)

下载器中间件(Downloader Middlewares)

爬虫中间件(Spider Middlewares)

调度中间件(Scheduler Middewares)

1. 安装scrapy

pip install scrapy

2. 创建一个Scrapy项目

scrapy startproject myspider

3. 创建一个Spider

cd myspider

scrapy genspider itcast.com itcast.com

4. 在Spider中编写代码

在生成的 itcast.py 里编写 允许运行的域名,起始页url

    name = "itcast"  # 爬虫名称
    allowed_domains = ["itcast.cn"]  # 允许的域名
    # start_urls = ["https://itcast.cn"]  # 起始url
    start_urls = ["https://www.itheima.com/teacher.html#ajavaee"]  # 起始url
    def parse(self, response):
        # 对于网站的相关操作
        # with open('itcast.html', 'wb') as f:
        #     f.write(response.body)
        node_list = response.xpath('//div[@class="li_txt"]') 
        # print(f'节点数为:{len(node_list)}')
        for node in node_list:
            temp = {}
            # 使用extract 而不是用下标取是为了避免json格式化问题
            temp['name'] = node.xpath('h3/text()').extract_first()
            temp['title'] = node.xpath('h4/text()').extract()
            temp['desc'] = node.xpath('p/text()').extract()
            # print(temp)
            # 使用迭代器而不是return 是为了便于数据的继续爬取
            yield temp

5.爬取数据

scrapy crawl myspider

6. 存储数据

settings.py


ITEM_PIPELINES = {
   "myspider.pipelines.MyspiderPipeline": 300,  # 指定启动的管道类 MyspiderPipeline,后面的数字代表启动的优先级,越小优先级越高,需要可以创建新的管道类
}

pipelines.py

class MyspiderPipeline:
    def __init__(self):
        self.file = open('itcast.json', 'w')
    def process_item(self, item, spider):
        # print(f'itme:{item}')
        # 将数据强制转化
        item = dict(item)
        # 将字典数据序列化
        json_data = json.dumps(item,ensure_ascii=False) + ',\n'
        # 将数据写入文件
        self.file.write(json_data)
        # 默认
        return item

    def __del__(self):
        self.file.close()
        
        ```
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个基于Python的开源网络爬虫框架,它可以快速高效地从网站上提取结构化数据。Scrapy框架拥有强大的数据提取、数据处理和数据存储功能,支持异步网络请求和分布式爬取。如果你想了解如何使用Scrapy框架进行网络爬取,可以按照以下步骤进行。 1. 安装Scrapy 使用pip命令安装Scrapy: ``` pip install scrapy ``` 2. 创建一个Scrapy项目 在命令行中使用以下命令创建一个新的Scrapy项目: ``` scrapy startproject projectname ``` 其中projectname是你的项目名称。 3. 定义爬虫 在Scrapy项目中,你需要定义一个或多个爬虫来指定你要爬取的网站、如何进行爬取以及如何处理爬取到的数据。在Scrapy中,爬虫是一个Python类,需要继承自Scrapy中的Spider类,并重写一些方法来实现爬虫的逻辑。 以下是一个简单的爬取百度首页的爬虫代码: ```python import scrapy class BaiduSpider(scrapy.Spider): name = 'baidu' start_urls = ['https://www.baidu.com'] def parse(self, response): title = response.xpath('//title/text()').extract_first() print(title) ``` 在上面的代码中,BaiduSpider类继承自Spider类,定义了爬虫的名称为baidu,开始爬取的URL为https://www.baidu.com。在parse方法中,使用XPath表达式提取了百度首页的title标签内容,并打印输出。 4. 运行爬虫 在命令行中使用以下命令运行爬虫: ``` scrapy crawl baidu ``` 其中baidu是爬虫的名称。 5. 数据处理和存储 在爬虫中,你可以使用Scrapy提供的Item类来定义你要爬取的数据结构,并使用Pipeline类来对爬取到的数据进行处理和存储。以下是一个简单的Pipeline类的代码: ```python class BaiduPipeline(object): def process_item(self, item, spider): title = item['title'] with open('baidu.txt', 'a', encoding='utf-8') as f: f.write(title + '\n') return item ``` 在上面的代码中,BaiduPipeline类实现了process_item方法,该方法用于处理爬取到的数据。在这个例子中,我们将爬取到的title内容写入到一个文本文件中。 6. 配置文件 在Scrapy项目中,你可以通过修改settings.py文件中的配置来控制爬虫的行为。例如,可以设置爬虫的下载延迟、请求头、是否遵守Robots协议等。 以上就是Scrapy框架入门的基本步骤。如果你想深入了解Scrapy框架的更多功能和用法,可以参考Scrapy官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值