学习笔记(6)——scrapy框架的初步了解

本文参考韦玮的《精通Python网络爬虫》

在windows上安装scrapy,可以打开cmd,输入pip install scrapy,会自动安装最新版的scrapy。也可以参考http://scrapy-chs.readthedocs.io/zh_CN/0.22/intro/install.html

但是安装后使用过程中发现有问题,就是,使用如下命令创建一个名为myxml的爬虫项目时,cmd显示,“scrapy不是一个内部或外部命令”。无法创建,经过百度,参考该文章

scrapy startproject myxml

使用命令对之前安装的scrapy进行卸载:

pip uninstall scrapy

scrapy的官网,下载源码包:

133510_Warf_3629884.png

下载后是一个.zip的压缩包,解压,打开解压的文件夹,按住shift键的同时,点击鼠标右键,点击“在此处打开命令窗口”,使用命令进行安装。

python setup.py install

可以看到如下信息即代表安装成功:

134405_wdmk_3629884.png

使用命令:scrapy startproject myxml创建一个名为myxml的爬虫项目

140456_E1hf_3629884.png

打开该目录可以看到以下文件

165218_Q0u9_3629884.png

myxml/__inint__.py是项目的初始化文件,主要写的是一些项目的初始化信息。

myxml/items.py是爬虫项目的数据容器文件,主要用来定义我们要获取的数据。

myxml/middlewares.py是爬虫项目的中间件文件,像user-agent,IP池的都可以在其中进行设置。

myxml/pipelines.py是爬虫项目的管道文件,主要用来对items里面定义的数据进行进一步的加工与处理。

myxml/settings.py是爬虫项目的设置文件,主要为爬虫项目的一些设置信息。

myxml/scrapy.cfg是爬虫项目的配置文件。

myxml/spiders/__init__.py是爬虫项目的爬虫部分的初始化文件。

myxml/spiders内一般还有你用命令生成的爬虫模版或者你修改好的爬虫成品。

scrapy常用命令:

scrapy startproject xxxxxx#创建一个名为xxxxxx的爬虫项目
scrapy genspider -l#注意是英文的l不是数字1,查看当前可以使用的爬虫模版
scrapy crawl xxx #启动一个名为xxx的爬虫
scrapy bench#会创建一个本地服务器并以最大的速度进行爬取,测试本地硬件的性能
scrapy check xxxx#对名为xxxx的爬虫文件进行合同(契约)检查
scrapy list#可以列出当前可以使用的爬虫文件
scrapy Edit#打开对应的编辑器对爬虫文件进行编辑
scrapy Parse#可以获取指定的URL网址,并使用对应的爬虫文件进行处理和分析
等等......

爬取一个新浪博客RSS订阅文件中的对应信息:

使用的是之前创建的myxml文件,首先设置Items:

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy
class MyxmlItem(scrapy.Item):
    #MyxmlIten是Item的子类
    # define the fields for your item here like:
    # name = scrapy.Field()
    #实例化
    #存储文章标题
    title = scrapy.Field()
    #存储对应的链接
    link = scrapy.Field()
    #存储对应文章的作者
    author = scrapy.Field()
    

接着生成一个爬虫文件,使用命令:

183214_qFur_3629884.png

看到我们可以使用的爬虫模版有basic、crawl、csvfeed和xmlfeed。

再使用命令:

scrapy genspider -t xmlfeed Myxml sina.com.cn

因为要分析xml源,所以爬虫模版使用的是xmlfeed,sina.com.cn是允许的域名。创建后在spiders目录下打开该.py文件(这边是Myxmlspider.py)进行编辑。

# -*- coding: utf-8 -*-
from scrapy.spiders import XMLFeedSpider
from myxml.items import MyxmlItem

class MyxmlspiderSpider(XMLFeedSpider):
    name = 'myxmlspider'
    allowed_domains = ['sina.com.cn']
    start_urls = ['http://blog.sina.com.cn/rss/1615888477.xml']
    iterator = 'iternodes' # you can change this; see the docs
    itertag = 'rss' # change it accordingly

    def parse_node(self, response,node):
        i =MyxmlItem()
        i['title'] = node.xpath("/rss/channel/item/title/text()").extract()
        i['link'] = node.xpath("/rss/channel/item/link/text()").extract()
        i['author'] = node.xpath("/rss/channel/item/author/text()").extract()
        for j in range(len(i['title'])):
            print("第"+str(j+1)+"篇文章")
            print("标题是:")
            print(i['title'][j])
            print("对应的链接是:")
            print(i['link'][j])
            print("对应的作者是:")
            print(i['author'][j])
            print('.................')
        return i

运行后显示:

184702_qkkk_3629884.png

转载于:https://my.oschina.net/u/3629884/blog/1499782

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值