scrapy 教程

本文介绍如何使用Scrapy框架创建爬虫项目,包括定义Item、编写Spider及使用选择器抓取网页数据等关键技术。

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

在本次教程中,默认已安装scrapy,如果没有安装,请返回看前面的安装指导

我们将要以 Open directory project (dmoz)为例进行爬虫

本次教程将会完成以下内容:

  1. 创建一个scrapy项目
  2. 定义Item(想要截取的数据)
  3. 写spider ,爬虫数据
  4. 写Item Pipeline存储额外的items

创建项目

scrapy startproject tutorial 创建了一个tutorial的目录,结构内容如下

 tutorial/
    scrapy.cfg            # 配置文件

    tutorial/             # 项目的python model,
        __init__.py

        items.py          # 项目的items文件

        pipelines.py      # 项目的pipelines文件
        settings.py       # 项目的setting文件

        spiders/          # 存放spider的地方
            __init__.py
            ...

定义Item

item包含爬虫的数据,内容形式类似python中的dict,先创建一个scrapy.Item类,然后定义属性,赋值为scrapy.Field
访问dmoz.org,假设我们想获取name,url,description这三个属性数据,首先编写items.py
import scrapy
class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

第一个spider

spider是一个类,用于定义和爬虫网站信息
为了创建spider,需要scrapy.spider类,并且定义一些属性
 
  • name:Spider的唯一名字
  • start_urls:spider爬虫开始的地方,
  • parse():spider方法,当下载request url后,调用此方法,将请求响应的内容作为唯一的参数传递给parse()方法;通过响应内容,解析数据,获取爬虫数据(根据Item中定义的内容),并且可以生成更多的url,继续请求
dmoz_spider.py
import scrapy
class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        filename = response.url.split("/")[-2] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

爬虫

在命令行,切换到项目根目录下,运行scrapy crawl dmoz命令,开始爬虫,显示内容如下

现在查看项目根目录,会发现生成了两个html文件,Books.html 和 Resources.html

截取Items

Selector选择器介绍
scrapy 使用Scrapy Selector 来获取数据,基于Xpath 和CSS
xpath 
 
  • /html/head/title 获取<head>标签下的<title>元素
  • /html/head/title/text():获取<title>元素中的文本信息
  • //td:查询所有的td元素
  • //div[@class="mine"]:查询所有class=“mine”的div元素

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值