首页 > 编程 > Python > 正文

使用Python的Scrapy框架编写web爬虫的简单示例

2020-02-23 00:47:13
字体:
来源:转载
供稿:网友

 在这个教材中,我们假定你已经安装了Scrapy。假如你没有安装,你可以参考这个安装指南。

我们将会用开放目录项目(dmoz)作为我们例子去抓取。

这个教材将会带你走过下面这几个方面:

    创造一个新的Scrapy项目     定义您将提取的Item     编写一个蜘蛛去抓取网站并提取Items。     编写一个Item Pipeline用来存储提出出来的Items

Scrapy由Python写成。假如你刚刚接触Python这门语言,你可能想要了解这门语言起,怎么最好的利用这门语言。假如你已经熟悉其它类似的语言,想要快速地学习Python,我们推荐这种深入方式学习Python。假如你是新手,想从开始使用Python学习,可以尝试去看看非程序员Python资源列表。

创造一个项目

在你要抓取之前,首先要建立一个新的Scrapy项目。然后进去你的存放代码目录,执行如下命令。

scrapy startproject tutorial

它将会创建如下的向导目录:

代码如下:tutorial/
    scrapy.cfg
    tutorial/
        __init__.py
        items.py
        pipelines.py
        settings.py
        spiders/
            __init__.py
            ...

这是一些基本信息:

    scrapy.cfg: 项目的配置文件。     tutorial/: 项目的python模块, 在这里稍后你将会导入你的代码。     tutorial/items.py: 项目items文件。     tutorial/pipelines.py: 项目管道文件。     tutorial/settings.py: 项目配置文件。     tutorial/spiders/: 你将要放入你的spider到这个目录中。


定义我们的Item

Items是装载我们抓取数据的容器。它们工作像简单的Python字典,它提供更多的保护,比如对未定义的字段提供填充功能防止出错。

它们通过创建scrapy.item.Item类来声明并定义它们的属性作为scrapy.item.Field 对象,就像是一个对象关系映射(假如你不熟悉ORMs,你将会看见它是一个简单的任务).

我们将需要的item模块化,来控制从demoz.org网站获取的数据,比如我们将要去抓取网站的名字,url和描述信息。我们定义这三种属性的域。我们编辑items.py文件,它在向导目录中。我们Item类看起来像这样。

 

from scrapy.item import Item, Field class DmozItem(Item): title = Field() link = Field() desc = Field()

这个看起来复杂的,但是定义这些item能让你用其他Scrapy组件的时候知道你的item到底是什么

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表