Scrapy 使用 XMLFeedSpider 来分析 XML 源

来源:互联网 发布:java http下载文件 编辑:程序博客网 时间:2024/06/13 04:09

RSS 是什么?
RSS 是一种信息聚合技术,可以让信息的发布和共享更为高效、便捷。
RSS 是基于 XML 标准的。

韦玮老师的新浪博客地址:http://blog.sina.com.cn/weiweihappy321
订阅地址:http://blog.sina.com.cn/rss/1615888477.xml

我们新创建一个项目:

scrapy startproject myxml

这里写图片描述

我们看一看可以使用的模板有哪些?

scrapy genspider -l

这里写图片描述

然后走到项目的目录下,生成 spider 的代码:

scrapy genspider -t xmlfeed myxmlspider sina.com.cn

这里写图片描述

接下来,我们在 items 中添加如下代码:

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

下面,我们对这个 Spider 文件进行修改:

# -*- coding: utf-8 -*-from scrapy.spiders import XMLFeedSpiderfrom myxml.items import MyxmlItemclass MyxmlspiderSpider(XMLFeedSpider):    name = 'myxmlspider'    allowed_domains = ['sina.com.cn']    # 设置要分析的 XML 文件地址    start_urls = ['http://blog.sina.com.cn/rss/1615888477.xml']    iterator = 'iternodes' # you can change this; see the docs    # 此时将开始迭代的节点设置为第一个节点 rss    itertag = 'rss' # change it accordingly    def parse_node(self, response, selector):        i = MyxmlItem()        i['title'] = selector.xpath("/rss/channel/item/title/text()").extract()        i['link'] = selector.xpath("/rss/channel/item/link/text()").extract()        i['author'] = selector.xpath("/rss/channel/item/author/text()").extract()        #i['url'] = selector.select('url').extract()        #i['name'] = selector.select('name').extract()        #i['description'] = selector.select('description').extract()        # 通过 for 循环以遍历出提取出来的存在在 item 中的信息并输出        for j in range(len(i['title'])):            print("第 %s 篇文章" % str(j+1))            print("标题是:%s" % i['title'][j])            print("对应链接是:%s"%i['link'][j])            print("对应作者是:%s"%i['author'][j])            print("-"*20)        return i

接下来,就可以通过:

scrapy crawl myxmlspider --nolog

运行这个爬虫程序。

运行结果:

1 篇文章标题是:精通Python网络爬虫-新书介绍对应链接是:http://blog.sina.com.cn/s/blog_6050805d0102wr72.html对应作者是:韦玮pig--------------------第 2 篇文章标题是:襄阳美对应链接是:http://blog.sina.com.cn/s/blog_6050805d01016wxn.html对应作者是:韦玮pig--------------------第 3 篇文章标题是:春至华夏对应链接是:http://blog.sina.com.cn/s/blog_6050805d01014ak1.html对应作者是:韦玮pig--------------------第 4 篇文章标题是:思对应链接是:http://blog.sina.com.cn/s/blog_6050805d010128nj.html对应作者是:韦玮pig--------------------第 5 篇文章标题是:春影对应链接是:http://blog.sina.com.cn/s/blog_6050805d010120sp.html对应作者是:韦玮pig--------------------第 6 篇文章标题是:春行对应链接是:http://blog.sina.com.cn/s/blog_6050805d01011xpl.html对应作者是:韦玮pig--------------------第 7 篇文章标题是:浅月对应链接是:http://blog.sina.com.cn/s/blog_6050805d0100wc7n.html对应作者是:韦玮pig--------------------第 8 篇文章标题是:寻对应链接是:http://blog.sina.com.cn/s/blog_6050805d0100ufqy.html对应作者是:韦玮pig--------------------第 9 篇文章标题是:红梅对应链接是:http://blog.sina.com.cn/s/blog_6050805d0100u2o1.html对应作者是:韦玮pig--------------------第 10 篇文章标题是:残夜对应链接是:http://blog.sina.com.cn/s/blog_6050805d0100u1ao.html对应作者是:韦玮pig--------------------
原创粉丝点击