Scrapy学习笔记(1)

本文是Scrapy初学者的学习笔记,介绍了如何创建Scrapy工程、编写和运行第一个爬虫,以及如何导出和处理爬取的数据。内容涵盖创建新工程、编写爬虫、使用scrapy shell测试和提取数据,以及数据的储存方式。通过实例展示了如何提取图片和标题等信息,并简单介绍了Item Pipeline的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我是scrapy初学者,所以只是爬取一些小资源拿来练练手,scrapy还有很多强大的功能没学,所以把这篇笔记当成初学者的笔记也好。因为总共学习编程不到半年,拿爬虫练手,即可以爬取有趣的资源,也会对编程更加热爱,提高编程能力。本次学习的scrapy就是爬虫很强大的框架。我参考的是scrapy的官方英文文档,不过实例都是我自己写的
本笔记假设你已经安装了scrapy。
我在装scrapy的时候也遇到了一些问题,比如python的win32api没有安装、lxml库找不到etree模块,其中win32api我是手动安装的;lxml是因为版本是4.0.0的,而且好像没有etree这个模块,所以我手动安装了3.8.0版本的,有etree,问题得以解决,全程都是靠百度,所以花点时间就可以装上,记得配好环境变量(Python根目录以及scripts目录)。

一、创建一个新工程

选择一个目录(我选在了D:\Project),打开命令行并输入

scrapy startproject MyProject


成功的话就会像下图所示

MyProject


你将会产生这样的一个目录:

目录

MyProject/外层目录
scrapy.cfg部署Scrapy爬虫的配置文件
/MyProject/你将要写代码的地方
__init__.py初始化脚本
items.pyitems代码
middlewares.pyMiddlewares代码
pipelines.pyPipelines代码
settings.pyScrapy爬虫的配置文件
spiders/写爬虫代码的地方


二、第一个爬虫

写一个爬虫

你可以手动编写一个python脚本或者使用命令行来完成它,这里以http://588ku.com/为例,有很多素材,可以爬爬爬


先进入MyProject目录下:
cd MyProject

命令行输入:
scrapy genspider material 588ku.com

接下来在spiders/目录下产生了名为material.py的文件,快去看看它的内容

# -*- coding: utf-8 -*-
import scrapy


class MaterialSpider(scrapy.Spider):
    name = 'material'
    allowed_domains = ['588ku.com']
    start_urls = ['http://588ku.com/']

    def parse(self, response):
        pass

它现在只是默认的格式,我们来修改它,让它可以爬取一些内容:

# -*- coding: utf-8 -*-
import scrapy


class MaterialSpider(scrapy.Spider):
    name = 'material'

    def start_requests(self):
        urls = [
            'http://588ku.com/pt/chengshi.html',
            'http://588ku.com/pt/lvxing.html'
        ]

        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        page = response.url.split('/')[-1][:-5]
        filename = 'material-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)



如你所见,这个名为MaterialSpider的类继承了scrapy.Spider类,并且定义了如下属性和方法:

  • name:用来识别爬虫,在一个工程中,爬虫的名字必须是独一无二的,你不能创建同一个名字的两个或更多的爬虫

  • start_requests():必须返回一个可迭代的请求(你可以写一个列表或者生成器),爬虫将根据这些请求爬取网站

  • parse():将调用此方法来对每一个请求进行下载处理。response属性是TextResponse的一个实例,它拥有页面的内容并且有更深入的方法来处理它;
    parse()方法常常用来解析response属性,将提取爬下来的数据作为字典类型或找到新的URL连接并建立新的请求



运行我们的爬虫

打开命令行,在MyProject/下,输入:
scrapy crawl material
你将会看到如图所示的一堆log:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值