XMLFeedSpider 主要用于 解析 xml格式的数据

创建一个scrapy 项目文件

scrapy startproject xxx

创建一个spider

scrapy genspider -t xmlfeed xxx(名字) xxx.com(网站名)

解析的例子为招远市人民政府的数据

代码如下

"""

招远市人民政府

"""
import re
import scrapy
from scrapy.spiders import XMLFeedSpider class Zhaoyuancity2GovproSpider(XMLFeedSpider):
name = 'ZhaoYuanCity_2_GovPro'
# allowed_domains = ['xxx.com']
start_urls = ['http://www.zhaoyuan.gov.cn/module/web/jpage/dataproxy.jsp?page=1&webid=155&path=http://www.zhaoyuan.gov.cn/&columnid=48655&unitid=180549&webname=%25E6%258B%259B%25E8%25BF%259C%25E5%25B8%2582%25E6%2594%25BF%25E5%25BA%259C&permiss']
iterator = 'iternodes' # you can change this; see the docs
itertag = 'datastore' # change it accordingly def parse_node(self, response, selector):
# 用css 获取 一个列表
source_list = selector.css('recordset record::text').extract()
for li in source_list:
# 用正则解析url 我们去里面获取时间标题和内容
url= re.search(r'href=\"(.*\.html)\"',li).group(1)
yield scrapy.Request(
url=url,
callback=self.parse
) def parse(self,response):
# 调用item
item = {}
# 写入链接提取器中获取到的url
item['title_url'] = response.url
# 标题名
item['title_name'] = response.css('meta[name="ArticleTitle"]::attr(content)').get()
# 标题时间
item['title_date'] = response.css('meta[name="pubdate"]::attr(content)').get()
# 内容提取 含源码
item['content_html'] = response.css('.main').get()
# 目录地址为
item['site_path_url'] = "http://www.zhaoyuan.gov.cn/col/col48655/index.html?number=ZYC120106"
# 交给item处理
yield item

运行项目

scrapy crawl xxxx--nolog

解释——总结:

  • iterator属性:设置使用的迭代器,默认为“iternodes”(一个基于正则表达式的高性能迭代器),除此之外还有“html”和“xml”迭代器;

  • itertag:设置开始迭代的节点;

  • parse_node方法:在节点与所提供的标签名相符合时被调用,在其中定义信息提取和处理的操作;

  • namespaces属性:以列表形式存在,主要定义在文档中会被蜘蛛处理的可用命令空间;

  • parse方法: 解析数据 发起正常请求

  • adapt_response(response)方法:在spider分析响应前被调用;

  • process_results(response, results)方法:在spider返回结果时被调用,主要对结果在返回前进行最后的处理。

scrapy 解析xml格式的数据的更多相关文章

  1. Android使用pull解析xml格式的数据

    dom解析:基于全文加载的解析方式   sax解析:基于事件的逐行解析方式  pull解析:同sax              XmlPullParser     //解析xml文件读取短信内容    ...

  2. 解析XML格式数据

    学习解析XML格式的数据前,搭建一个简单的web服务器,在这个服务器上提供xml文本用于练习. 一.搭建Apache服务器 在Apache官网下载编译好的服务器程序,安装.对于Windows来说127 ...

  3. NSXMLParser解析xml格式

    NSXMLParser解析xml格式的数据 用法如下: 首先,NSXMLParser必须继续NSXMLParserDelegate协议 @interface XMLHelper : NSObject ...

  4. Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  5. iOS开发之解析XML格式数据

    XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...

  6. 如何在JSP页面里面显示xml格式的数据

    正常情况下,在jsp页面里的标签里写xml格式的数据,在浏览器里面的页面里显示出来的是乱码. 为什么会显示乱码呢?原来xml标签在jsp里会被解析为浏览器对象,因为xml最开始被设计出来是 为了写网页 ...

  7. WP8解析XML格式文件

    DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式,如果要返回XML格式的话,需要在加上format=xml. 这里举一个简单的解析XML格式的例子(更 ...

  8. xml格式的数据转化成数组

    将得到的xml格式的数据转化成数组 <?php //构造xml $url = "http://api.map.baidu.com/telematics/v3/weather?locat ...

  9. Dom4j解析xml格式的字符串【java】

    一般我们会使用dom4j.SAX.w3c来解析xml文件,网上也大多提供此类解决方案. 但在实际项目中,也有会解析xml格式的字符串报文的. 比如,有如下字符串: String = "< ...

随机推荐

  1. 手把手教你怎么将linux的一个函数性能搞奔溃

    static struct fib_table *fib_empty_table(struct net *net){    u32 id;    for (id = 1; id <= RT_TA ...

  2. 四连测总结(XYX)

    目录 成绩 总结 事后... 成绩 telephonewire monkey 总分 0 56 56 cowjog guard path temperature 总分 0 40 0 68 108 cba ...

  3. 第五十一篇:webpack中的loader(二) --less-loader

    好家伙 先扩充一下知识点: 什么是.less文件? 作为一名前端开发的同学,很多时候我们都无法避免地要去写大量的 CSS 代码, 而且耗费的时间还不少,所以学习一种能够提升开发效率的 CSS 预处理器 ...

  4. openstack中Keystone组件简解

    一.Keystone服务概述 在Openstack框架中,keystone(Openstack Identity Service)的功能是负责验证身份.校验服务规则和发布服务令牌的,它实现了Opens ...

  5. 【debug技巧】jstat:虚拟机统计信息监视器

    我们在日常开发时,难免会遇到一些没有内存泄漏等问题.有时,我们无法下载arthas等开源的诊断工具.这时候,我们就可以借助JDK自带的一些诊断工具. 首先我们可以使用jstat查看gc信息 字段含义 ...

  6. 6.第五篇 安装keepalived与Nginx

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483796&idx=1&sn=347664de ...

  7. Solutions:网站搜索 - Elastic Site Search

  8. 第二章:视图层 - 5:HttpRequest对象

    每当一个用户请求发送过来,Django将HTTP数据包中的相关内容,打包成为一个HttpRequest对象,并传递给每个视图函数作为第一位置参数,也就是request,供我们调用. HttpReque ...

  9. 第六章:Django 综合篇 - 1:配置 Django

    Django项目的设置文件位于项目同名目录下,名叫settings.py.这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证. 一.简述 settings.py文件本质上是一个 ...

  10. 几篇关于MySQL数据同步到Elasticsearch的文章---第二篇:canal 实现Mysql到Elasticsearch实时增量同步

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484377&idx=1&sn=199bc88 ...