标签:project 作者 写入 file tac field 提取 str 设置
进入新浪博客点击订阅后会提示订阅地址为 XML 格式的地址,如图
博客地址
http: //blog .sina.com.cn /u/3980770831 |
XML 地址内容,如图
XML 地址:
http: //blog .sina.com.cn /rss/3980770831 .xml |
创建一个项目:
$ scrapy startproject blogxml |
填写 item 需要定义的存储数据:
import scrapy class BlogxmlItem(scrapy.Item): # 存储标题 title = scrapy.Field() # 存储对应连接 link = scrapy.Field() # 存储对应文章作者 author = scrapy.Field() |
创建一个 xml 模板:
$ cd blogxml $ scrapy genspider - l $ scrapy genspider - t xmlfeed blogxmlspider sina.com.cn |
打开创建的 blogxmlspider.py 文件更改代码:
# -*- coding: utf-8 -*- from scrapy.spiders import XMLFeedSpider from blogxml.items import BlogxmlItem class BlogxmlspiderSpider(XMLFeedSpider): name = ‘blogxmlspider‘ allowed_domains = [ ‘sina.com.cn‘ ] # 设置 xml 地址 iterator = ‘iternodes‘ # you can change this; see the docs # 此时将开始迭代的节点设置为第一个节点 rss itertag = ‘rss‘ # change it accordingly def parse_node( self , response, node): i = BlogxmlItem() # 利用 XPath 表达式将对应信息提取出来,并存储到对应的 Item 中 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 |
修改前:
修改后:
写入一个 main.py 内容为:
from scrapy import cmdline cmdline.execute( "scrapy crawl blogxmlspider" .split()) |
直接执行即可。
标签:project 作者 写入 file tac field 提取 str 设置
原文地址:https://www.cnblogs.com/dalton/p/11353878.html