CN109614535A - 一种基于Scrapy框架的网络数据的采集方法及装置 - Google Patents

一种基于Scrapy框架的网络数据的采集方法及装置 Download PDF

Info

Publication number
CN109614535A
CN109614535A CN201811444993.6A CN201811444993A CN109614535A CN 109614535 A CN109614535 A CN 109614535A CN 201811444993 A CN201811444993 A CN 201811444993A CN 109614535 A CN109614535 A CN 109614535A
Authority
CN
China
Prior art keywords
field
acquisition
contents
field contents
item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811444993.6A
Other languages
English (en)
Other versions
CN109614535B (zh
Inventor
吕婧
辛北军
张岩
刘建华
胡向旭
马宏强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GANSU WANWEI INFORMATION TECHNOLOGY CO LTD
Original Assignee
GANSU WANWEI INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GANSU WANWEI INFORMATION TECHNOLOGY CO LTD filed Critical GANSU WANWEI INFORMATION TECHNOLOGY CO LTD
Priority to CN201811444993.6A priority Critical patent/CN109614535B/zh
Publication of CN109614535A publication Critical patent/CN109614535A/zh
Application granted granted Critical
Publication of CN109614535B publication Critical patent/CN109614535B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及一基于Scrapy框架的网络数据的采集方法及装置,所述方法包括:基于一代码固定的Item动态类,获取网络采集事件中的采集字段;获取与每一个所述采集字段对应的字段内容;存储所述字段内容。本发明对于任意一个网络采集事件,均可以采用一个固定的Item动态类,获取网络采集事件中的采集字段,而不需要在对于不同的网络采集事件去对应修改Item类,提高采集字段的获取效率;且对于任何一个网络采集事件,其中的采集字段可以灵活配置,没有局限性。

Description

一种基于Scrapy框架的网络数据的采集方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于Scrapy框架的网络数据的采集方法及装置。
背景技术
Scrapy是一个开源且较为著名的爬虫框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(或者网络抓取)所设计的,也可以应用在获取API所返回的数据(例如AmazonAssociates Web Services)或者通用的网络爬虫,主要功能是爬取网站数据,从非结构性的数据源提取结构性数据。
Scrapy提供了Item类满足常用数据输出的需求。Item类可以使用简单的 class定义语法,其类成员由Field对象声明而来。Field对象指明了每个字段的元数据(metadata),可以为每个字段指明任何类型的元数据。
但是针对不同的采集项目,每次在采集时需要都需要修改Item类来适配具体的采集场景,即在不同的采集场景下,需要对应修改Item类代码才可以适用。这种方式对于采集场景较多,任务较多时,会产生操作繁琐,工作效率较低的技术问题。
发明内容
基于此,有必要针对目前在不同采集场景下需要修改Item类的问题,提供一种基于Scrapy框架的网络数据的采集方法及装置。
一种基于Scrapy框架的网络数据的采集方法,包括:
基于一代码固定的Item动态类,获取网络采集事件中的采集字段;
获取与每一个所述采集字段对应的字段内容;
存储所述字段内容。
在其中一个实施例中,所述基于一代码固定的Item类,获取网络采集事件中的采集字段之前,所述方法还包括:
定义一代码固定的Item动态类,所述Item动态类包含一通用的采集字段变量,所述变量指向对应的采集字段对象。
在其中一个实施例中,所述基于一代码固定的Item动态类,获取网络采集事件中的采集字段,具体为:
基于一代码固定的Item动态类,循环增加采集域的数量,遍历所述网络采集事件以获取所述采集字段。
在其中一个实施例中,所述获取与每一个所述采集字段对应的字段内容之后,所述方法还包括:
将与每一个所述采集字段对应的字段内容添加至目标数组中;
遍历所述目标数组,将读取的所述目标数组中与每一个所述采集字段对应的字段内容拼接成目标字符串;
所述存储所述字段内容,具体为:
存储包含所述字段内容的所述目标字符串。
在其中一个实施例中,所述将与每一个所述采集字段对应的字段内容添加至目标数组中,包括:
采用hxs对象读取所述网络采集事件中每个网站中的页面信息;
通过hxs对象的xpath方法从所述页面信息中提取与每个所述采集字段对应的字段内容;
将提取的与每个所述采集字段对应的字段内容添加至目标数组中。
在其中一个实施例中,所述遍历所述目标数组,将读取的所述目标数组中与每一个所述采集字段对应的字段内容拼接成目标字符串,包括:
遍历所述目标数组,获取所述目标数组中的与每一个所述采集字段对应的字段内容;
在每一个所述字段内容后添加隔离标识;
将每一个字段内容和对应添加的所述隔离标识拼接形成一个目标字符串。
在其中一个实施例中,所述在每一个所述字段内容后添加隔离标识之前,还包括:
对每一个所述字段内容进行预处理,所述预处理至少包括去除所述字段内容中的特殊字符与空白。
一种基于Scrapy框架的网络数据的采集装置,所述装置包括:
字段获取模块,用于基于一代码固定的Item动态类,获取网络采集事件中的采集字段;
内容获取模块,用于获取与每一个所述采集字段对应的字段内容;
存储模块,用于存储所述字段内容。
在其中一个实施例中,所述装置还包括:
定义模块,用于定义一代码固定的Item动态类,所述Item动态类包含一通用的采集字段变量,所述变量指向对应的采集字段对象。
在其中一个实施例中,所述字段获取模块具体用于:
基于一代码固定的Item动态类,循环增加采集域的数量,遍历所述网络采集事件以获取所述采集字段。
在其中一个实施例中,所述装置还包括:
添加模块,用于将与每一个所述采集字段对应的字段内容添加至目标数组中;
拼接模块,用于遍历所述目标数组,将读取的所述目标数组中与每一个所述采集字段对应的字段内容拼接成目标字符串;
所述存储模块具体用于:
存储包含所述字段内容的所述目标字符串。
在其中一个实施例中,所述添加模块具体用于:
采用hxs对象读取所述网络采集事件中每个网站中的页面信息;
通过hxs对象的xpath方法从所述页面信息中提取与每个所述采集字段对应的字段内容;
将提取的与每个所述采集字段对应的字段内容添加至目标数组中。
在其中一个实施例中,所述拼接模块具体用于:
遍历所述目标数组,获取所述目标数组中的与每一个所述采集字段对应的字段内容;
在每一个所述字段内容后添加隔离标识;
将每一个字段内容和对应添加的所述隔离标识拼接形成一个目标字符串。
在其中一个实施例中,所述拼接模块还用于:
对每一个所述字段内容进行预处理,所述预处理至少包括去除所述字段内容中的特殊字符与空白。
本发明中,对于任一个网络采集事件(该网络采集事件用于从多个网站采集不同数据字段中的字段内容),均可以基于一代码固定的Item动态类,获取网络采集事件中的采集字段;并获取与每一个所述采集字段对应的字段内容;存储所述字段内容。本发明的以上整个过程中,对于任意一个网络采集事件,均可以采用一个固定的Item动态类,获取网络采集事件中的采集字段,而不需要在对于不同的网络采集事件去对应修改Item类,提高采集字段的获取效率;且对于任何一个网络采集事件,其中的采集字段可以灵活配置,没有局限性。
附图说明
图1为一实施例的基于Scrapy框架的网络数据的采集方法的流程图;
图2为一示例中网站录入的示意图;
图3为基于图2采集的字段内容的示意图;
图4为一实施例的基于Scrapy框架的网络数据的采集装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
Scrapy是一个开源且较为著名的爬虫框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的,也可以应用在获取API所返回的数据(例如Amazon Associates Web Services)或者通用的网络爬虫,主要功能是爬取网站数据,从非结构性的数据源提取结构性数据。
Scrapy提供了Item类来满足常用数据输出的需求,Item可以使用简单的 class定义语法,其类成员由Field对象声明而来,代码如下:
import scrapy
class Product(scrapy.Item):
name=scrapy.Field()
price=scrapy.Field()
stock=scrapy.Field()
last_updated=scrapy.Field(serializer=str)
在上述码片段中,Field对象指明了每个字段的元数据(metadata),可以为每个字段指明任何类型的元数据,使用非常方便。但是针对不同的采集项目,每次在采集时需要都需要修改Item类来适配具体的采集场景,操作繁琐,工作效率较低,在代码适应性上也存在一定的局限性。
本发明可以在固定Item类代码的情况下,灵活设置采集内容,从而实现采集项目的动态可配置,提高代码适应性,进而提高项目开发效率
图1为本发明一实施例的基于Scrapy框架的网络数据的采集方法的流程图。如图1所示,该方法包括:
步骤120,基于一代码固定的Item动态类,获取网络采集事件中的采集字段;
步骤140,获取与每一个采集字段对应的字段内容;
步骤160,存储字段内容。
本发明中,对于任一个网络采集事件(该网络采集事件用于从多个网站采集不同数据字段中的字段内容),均可以基于一代码固定的Item动态类,获取网络采集事件中的采集字段;并获取与每一个所述采集字段对应的字段内容;存储所述字段内容。本发明的以上整个过程中,对于任意一个网络采集事件,均可以采用一个固定的Item动态类,获取网络采集事件中的采集字段,而不需要在对于不同的网络采集事件去对应修改Item类,提高采集字段的获取效率;且对于任何一个网络采集事件,其中的采集字段可以灵活配置,没有局限性。
本实施例中,网络采集事件指用于从多个网站采集不同数据字段中的字段内容。网络采集事件也可以是一个具体的采集项目。具体本实施例在以下内容中进一步阐述。
其中,在步骤120之前,为实现实施例的以上内容,可以定义一代码固定的Item动态类,该Item动态类包含一通用的采集字段变量,采集字段变量指向对应的采集字段对象。本实施例基于一固定代码的Item动态类,可以实现对于任何一个网络采集事件,均可以获取其采集字段。采集字段为需要采集的网站中相同或者相似信息的统称,其表明采集的相同或者相似的信息均可以归类在同一采集字段下。字段内容可以理解为在对应的采集字段下,需要采集的可以归类在对应采集字段下的相同或者相似的信息或者数据。
具体而言,本实施例需要对Scrapy的Item类定义形式做出规定。其可以由使用者创建一个Data Item动态类,该Item动态类的传入参数是Scrapy的Item 类实例化后的对象,且在Data Item动态类内部。除此之外,Data Item动态类必须包含通用的采集字段变量,该采集字段变量指向对应的采集字段对象。例如: name=Field()中,name为采集字段变量,目的是为了动态匹配每一个采集字段的对象,Field方法可以产生该字段的对象。
本实施例中,定义一代码固定的Item动态类可以采用如下示例代码:
步骤1、导入使用到的类库
import scrapy
from scrapy.item import Item,Field
步骤2、创建DataItem动态类
class DataItem(scrapy.Item):
name=Field()
这样一来,无论在一个网络采集事件中需要获取多少字段,都只需要固定 Item类代码不做修改,通过具体采集域的数量进行枚举循环即可实现。即步骤 120具体为:
基于一代码固定的Item动态类,循环增加采集域的数量,遍历网络采集事件以获取采集字段。
在获取一个网络采集事件中的采集字段的过程中,可以首先建立循环,循环的内容就是该网络采集事件中所有的采集字段(也就是前面描述中的name、 price、stock这类字段),当所有采集字段遍历完毕时,退出循环。循环的过程即在代码固定的Item动态类下,通过具体采集域的数量进行枚举循环,获取所有的采集字段。
本实施例的一实现方式中,步骤140之后,该方法还包括:
将与每一个采集字段对应的字段内容添加至目标数组中;
遍历目标数组,将读取的目标数组中与每一个采集字段对应的字段内容拼接成目标字符串。
此时,存储字段内容,具体为:存储包含字段内容的目标字符串。
其中,将与每一个采集字段对应的字段内容添加至目标数组中时,可以采用hxs对象读取网络采集事件中每个网站中的页面信息;通过hxs对象的xpath 方法从页面信息中提取与每个采集字段对应的字段内容;将提取的与每个采集字段对应的字段内容添加至目标数组中。
其中,在通过xpath方法提取字段内容时,可以通过extract方法制定的提取规则提取字段内容。可以知道的是,extract方法主要功能为制定内容的提取规则,具体规则可在开发的时候定义。
在获取字段内容之后,可以将字段内容添加一目标数组中,该目标数字可以采用url_list数组表示。本实施例中,目标数组url_list优选为字符串数组。这样,可以将所有的字段内容保存在同一个数组中,实现了字段内容的动态保存。
在这里,需要指出的是,在建立循环,获取采集字段的过程中,字段数组 (param_key)索引(field_index)会自增更新,循环退出后即可确定字段的数目。在这里,因为索引是连续的整数,所以索引也具备计数功能。在后续的统计采集字段的数量时,可以进一步使用此索引和url_list数组以确定字段的数量。
其中,获取采集字段并生成目标数组可以采用如下示例性代码:
步骤1、建立循环
forparam_key inparam_keys:
步骤2、转换运行结果
select_data=hxs.xpath(param_key[0]).extract()
步骤3、将结果追加到数组中
url_list.append(select_data)
步骤4、更新数组索引
field_index=field_index+1
本实施例在获取每个字段的字段内容之后,可以通过添加隔离标识或者关键字符,将不同数据域的数据隔离开来,方便后续开发的时候随取随用。
具体的,遍历目标数组,将读取的目标数组中与每一个采集字段对应的字段内容拼接成目标字符串,包括:
遍历目标数组,获取目标数组中的与每一个采集字段对应的字段内容;
在每一个字段内容后添加隔离标识;
将每一个字段内容和对应添加的隔离标识拼接形成一个目标字符串。
本实施例中,在每一个字段内容后添加隔离标识之前,可以对每一个字段内容进行预处理,预处理至少包括去除字段内容中的特殊字符与空白。
其中,遍历目标数组url_list,可以取出获取到的所有采集字段的字段内容。接下来可以将每个字段内容进行转换。具体的,可以将从字符串数组url_list中取到的字段内容用隔离标识(如标识字符串)进行隔离转换,主要转换方法是按照当前索引将url_list保存的抓取结果(即字段内容)获取到,去掉特殊字符与空白,在处理后的字符串后追加隔离标识,并拼接到前一个抓取结果上,最终将所有字段对应的抓取结果(即字段内容)拼接成一个目标字符串。该目标字符串可以存到数据库中,也可以存储到文件中,很大程度上也方便了后续取用与查。
本实施例中,遍历目标数组获取字段内容,并形成目标字符串的过程,可以采用如下示例性代码:
步骤1、统计数组范围并进行循环
for i in range(1,len(url_list)):
步骤2、拼接字符串并清除尾串字符
item['name']=item['name']+"#####"+url_list[i][index].strip()
需要指出的是,隔离标识字符"#####"可以替换为其它在字段内容中不可能出现的字符串或者人为构造的复杂字符串,只要确保在字段内容中不会和隔离标识混淆即可。
以上代码可以进一步说明如下:
url_list为包含字段内容的目标数组,其大小与采集字段的数量相同,data 可以定义为一个临时文本字符串,作用是以追加的形式保存拼接后的字符串。
item是指Scrapy框架中Item类实例化后的对象,item['data']为其中命名为data的成员变量,其保存了转换、拼接后的抓取结果。
yield item为固定的item数据域。
以上代码的主要流程为:
1、遍历存放字段内容的url_list数组,并不断将每一个与采集字段对应的字段内容追加到临时字符串data中,直至遍历完毕,循环退出。
2、遍历完毕后将data字符串的内容赋值给item对象的data成员变量。
3、最终,yield item将规定对Scrapy的Item类定义形式,减少采集字段的配置。
结合以上内容可知,对采集字段和字段内容分别进行了循环遍历和转换,需要使得Item类的定义可以固定下来,进一步的,Scrapy框架爬虫灵活性可以提高,且对于不同的网络采集事件和内容可以自适应适配。
本发明通过固定Item数据域类的定义,改进数据域类算法,不再需要每次修改Item数据域类代码,从而实现采集项的灵活可配置,提高了字段匹配与结果的准确性,也明显提高了开发效率,同时大大缩减采集字段键入出错的机会。
采用本发明实现了多个网站不同数据字段的数据爬取,将爬取的数据保存在数据库中,经实践验证,本实施例采用的技术方案正确可靠。以下通过具体的例子对以上实施例中的内容作进一步解释,具体如下:
本例主要完成的网站实例有豆瓣、安居客、政务服务网三个网站,如图2 所示,在这三个网站中豆瓣只采集文章主题列表一个字段信息,安居客采集经纪人及其电话两个信息字段,政务服务网采集便民措施中的表格,需要采集四个字段,其中一些字段的数据值本身为空。
https://www.douban.com/group/explore豆瓣列表
https://lanzhou.anjuke.com/tycoon/chengguanqu安居客列表
http://www.gszwfw.gov.cn/col/col1457/index.html政务服务便民服务
其中豆瓣采集了文章列表标题信息:
标题//div[@class='channel-item']/div[@class='bd']/h3/a/text()
安居客采集了经纪人和电话信息:
经纪人//div[@class='jjr-itemmod']/div[@class='jjr-info']/div[@class=
'jjr-title']/h3/a/text()
电话//div[@class='jjr-itemmod']/div[@class='jjr-side']/text()[2]
政务服务网采集了表格四列内容
表列1//div[@class='maincon']/table/tbody/tr[1]/td/table[2]/tbody/tr/td/
table/tbody/tr/td[1]/text()
表列2//div[@class='maincon']/table/tbody/tr[1]/td/table[2]/tbody/tr/td/
table/tbody/tr/td[2]/div/a/text()
表列3//div[@class='maincon']/table/tbody/tr[1]/td/table[2]/tbody/tr/td/
table/tbody/tr/td[2]/p/text()
表列4//div[@class='maincon']/table/tbody/tr[1]/td/table[2]/tbody/tr/td/
table/tbody/tr/td[2]/text()
在采集中使用hxs对三个网站逐个读取页面,然后读取每个网站的采集数据列表,将采集的字段内容放到url_list字符数组中,如下,
forparam_key inparam_keys:
select_data=hxs.xpath(param_key[0]).extract()
url_list.append(select_data)
field_index=field_index+1
data_field=data_field+",data"+str(field_index)+"VARCHAR(2000)"
在对采集的长度不同字段进行完整度归一化处理后,将各个数据隔离开来存放。
for index,val in enumerate(url_list[0]):
item=DataItem()
name=url_list[0][index].strip()
item['name']=name
fori inrange(1,len(url_list)):
item['name']=item['name']+"#####"+url_list[i][index].strip()
yield item
之后将采集结果写入系统数据库中。系统采用MySQL数据库实现。数据在写入过程中对标识字符串进行区分。
data_collect=item['name'].split("#####")
insert_data="'"+data_collect[0]+"'"
for i in range(1,len(data_collect)):
insert_data=insert_data+",'"+data_collect[i]+"'"
至此完成数据采集过程。最终的结果可以参照图3所示。
本实施例还提供了一种基于Scrapy框架的网络数据的采集装置。如图4所示,该装置包括:
字段获取模块120,用于基于一代码固定的Item动态类,获取网络采集事件中的采集字段;
内容获取模块140,用于获取与每一个采集字段对应的字段内容;
存储模块160,用于存储字段内容。
本发明中,对于任一个网络采集事件(该网络采集事件用于从多个网站采集不同数据字段中的字段内容),均可以基于一代码固定的Item动态类,获取网络采集事件中的采集字段;并获取与每一个所述采集字段对应的字段内容;存储所述字段内容。本发明的以上整个过程中,对于任意一个网络采集事件,均可以采用一个固定的Item动态类,获取网络采集事件中的采集字段,而不需要在对于不同的网络采集事件去对应修改Item类,提高采集字段的获取效率;且对于任何一个网络采集事件,其中的采集字段可以灵活配置,没有局限性。
可选的,在一实施例中,该装置还包括:
定义模块,用于定义一代码固定的Item动态类,Item动态类包含一通用的采集字段变量,变量指向对应的采集字段对象。
可选的,在一实施例中,字段获取模块具体用于:
基于一代码固定的Item动态类,循环增加采集域的数量,遍历网络采集事件以获取采集字段。
可选的,在一实施例中,该装置还包括:
添加模块,用于将与每一个采集字段对应的字段内容添加至目标数组中;
拼接模块,用于遍历目标数组,将读取的目标数组中与每一个采集字段对应的字段内容拼接成目标字符串;
存储模块具体用于:
存储包含字段内容的目标字符串。
可选的,在一实施例中,添加模块具体用于:
采用hxs对象读取网络采集事件中每个网站中的页面信息;
通过hxs对象的xpath方法从页面信息中提取与每个采集字段对应的字段内容;
将提取的与每个采集字段对应的字段内容添加至目标数组中。
可选的,在一实施例中,拼接模块具体用于:
遍历目标数组,获取目标数组中的与每一个采集字段对应的字段内容;
在每一个字段内容后添加隔离标识;
将每一个字段内容和对应添加的隔离标识拼接形成一个目标字符串。
可选的,在一实施例中,拼接模块还用于:
对每一个字段内容进行预处理,预处理至少包括去除字段内容中的特殊字符与空白。
以上装置的具体实现可以参照以上方法实施例中的具体内容,本实施例在上不再具体赘述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (14)

1.一种基于Scrapy框架的网络数据的采集方法,其特征在于,包括:
基于一代码固定的Item动态类,获取网络采集事件中的采集字段;
获取与每一个所述采集字段对应的字段内容;
存储所述字段内容。
2.根据权利要求1所述的方法,其特征在于,所述基于一代码固定的Item类,获取网络采集事件中的采集字段之前,所述方法还包括:
定义一代码固定的Item动态类,所述Item动态类包含一通用的采集字段变量,所述采集字段变量指向对应的采集字段对象。
3.根据权利要求1所述的方法,其特征在于,所述基于一代码固定的Item动态类,获取网络采集事件中的采集字段,具体为:
基于一代码固定的Item动态类,循环增加采集域的数量,遍历所述网络采集事件以获取所述采集字段。
4.根据权利要求1所述的方法,其特征在于,所述获取与每一个所述采集字段对应的字段内容之后,所述方法还包括:
将与每一个所述采集字段对应的字段内容添加至目标数组中;
遍历所述目标数组,将读取的所述目标数组中与每一个所述采集字段对应的字段内容拼接成目标字符串;
所述存储所述字段内容,具体为:
存储包含所述字段内容的所述目标字符串。
5.根据权利要求4所述的方法,其特征在于,所述将与每一个所述采集字段对应的字段内容添加至目标数组中,包括:
采用hxs对象读取所述网络采集事件中每个网站中的页面信息;
通过hxs对象的xpath方法从所述页面信息中提取与每个所述采集字段对应的字段内容;
将提取的与每个所述采集字段对应的字段内容添加至目标数组中。
6.根据权利要求4所述的方法,其特征在于,所述遍历所述目标数组,将读取的所述目标数组中与每一个所述采集字段对应的字段内容拼接成目标字符串,包括:
遍历所述目标数组,获取所述目标数组中的与每一个所述采集字段对应的字段内容;
在每一个所述字段内容后添加隔离标识;
将每一个字段内容和对应添加的所述隔离标识拼接形成一个目标字符串。
7.根据权利要求6所述的方法,其特征在于,所述在每一个所述字段内容后添加隔离标识之前,还包括:
对每一个所述字段内容进行预处理,所述预处理至少包括去除所述字段内容中的特殊字符与空白。
8.一种基于Scrapy框架的网络数据的采集装置,其特征在于,所述装置包括:
字段获取模块,用于基于一代码固定的Item动态类,获取网络采集事件中的采集字段;
内容获取模块,用于获取与每一个所述采集字段对应的字段内容;
存储模块,用于存储所述字段内容。
9.根据权利要求8所述装置,其特征在于,所述装置还包括:
定义模块,用于定义一代码固定的Item动态类,所述Item动态类包含一通用的采集字段变量,所述采集字段变量指向对应的采集字段对象。
10.根据权利要求8所述的装置,其特征在于,所述字段获取模块具体用于:
基于一代码固定的Item动态类,循环增加采集域的数量,遍历所述网络采集事件以获取所述采集字段。
11.根据权利要求8所述的方法,其特征在于,所述装置还包括:
添加模块,用于将与每一个所述采集字段对应的字段内容添加至目标数组中;
拼接模块,用于遍历所述目标数组,将读取的所述目标数组中与每一个所述采集字段对应的字段内容拼接成目标字符串;
所述存储模块具体用于:
存储包含所述字段内容的所述目标字符串。
12.根据权利要求11所述的装置,其特征在于,所述添加模块具体用于:
采用hxs对象读取所述网络采集事件中每个网站中的页面信息;
通过hxs对象的xpath方法从所述页面信息中提取与每个所述采集字段对应的字段内容;
将提取的与每个所述采集字段对应的字段内容添加至目标数组中。
13.根据权利要求11所述的装置,其特征在于,所述拼接模块具体用于:
遍历所述目标数组,获取所述目标数组中的与每一个所述采集字段对应的字段内容;
在每一个所述字段内容后添加隔离标识;
将每一个字段内容和对应添加的所述隔离标识拼接形成一个目标字符串。
14.根据权利要求13所述的装置,其特征在于,所述拼接模块还用于:
对每一个所述字段内容进行预处理,所述预处理至少包括去除所述字段内容中的特殊字符与空白。
CN201811444993.6A 2018-11-29 2018-11-29 一种基于Scrapy框架的网络数据的采集方法及装置 Active CN109614535B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811444993.6A CN109614535B (zh) 2018-11-29 2018-11-29 一种基于Scrapy框架的网络数据的采集方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811444993.6A CN109614535B (zh) 2018-11-29 2018-11-29 一种基于Scrapy框架的网络数据的采集方法及装置

Publications (2)

Publication Number Publication Date
CN109614535A true CN109614535A (zh) 2019-04-12
CN109614535B CN109614535B (zh) 2021-10-08

Family

ID=66005986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811444993.6A Active CN109614535B (zh) 2018-11-29 2018-11-29 一种基于Scrapy框架的网络数据的采集方法及装置

Country Status (1)

Country Link
CN (1) CN109614535B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110187718A (zh) * 2019-07-23 2019-08-30 常州工学院 基于Scrapy框架和四旋翼飞行器的城市物流系统及方法
CN112380260A (zh) * 2021-01-15 2021-02-19 国能信控互联技术有限公司 基于不同采集场景的断线缓存方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103475687A (zh) * 2013-05-24 2013-12-25 北京网秦天下科技有限公司 用于下载网站数据的分布式方法和系统
CN106649810A (zh) * 2016-12-29 2017-05-10 山东舜网传媒股份有限公司 基于Ajax的新闻网页动态数据的抓取方法及系统
US20170161520A1 (en) * 2015-12-04 2017-06-08 Xor Data Exchange, Inc. Systems and Methods of Determining Compromised Identity Information
CN107273409A (zh) * 2017-05-03 2017-10-20 广州赫炎大数据科技有限公司 一种网络数据采集、存储及处理方法及系统
CN108334585A (zh) * 2018-01-29 2018-07-27 湖北省楚天云有限公司 一种网页爬虫方法、装置以及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103475687A (zh) * 2013-05-24 2013-12-25 北京网秦天下科技有限公司 用于下载网站数据的分布式方法和系统
US20170161520A1 (en) * 2015-12-04 2017-06-08 Xor Data Exchange, Inc. Systems and Methods of Determining Compromised Identity Information
CN106649810A (zh) * 2016-12-29 2017-05-10 山东舜网传媒股份有限公司 基于Ajax的新闻网页动态数据的抓取方法及系统
CN107273409A (zh) * 2017-05-03 2017-10-20 广州赫炎大数据科技有限公司 一种网络数据采集、存储及处理方法及系统
CN108334585A (zh) * 2018-01-29 2018-07-27 湖北省楚天云有限公司 一种网页爬虫方法、装置以及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OIFENGO: "SCRAPY从入门到精通(3)-使用Item封装数据", 《博客园》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110187718A (zh) * 2019-07-23 2019-08-30 常州工学院 基于Scrapy框架和四旋翼飞行器的城市物流系统及方法
CN112380260A (zh) * 2021-01-15 2021-02-19 国能信控互联技术有限公司 基于不同采集场景的断线缓存方法

Also Published As

Publication number Publication date
CN109614535B (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
CN105843965B (zh) 一种基于url主题分类的深层网络爬虫表单填充方法和装置
CN102982117B (zh) 信息搜索方法和装置
CN104462501A (zh) 基于结构化数据的知识图谱构建方法和装置
CN101582074B (zh) 一种DeepWeb响应页面数据抽取方法
CN104391978B (zh) 用于浏览器的网页收藏处理方法及装置
CN108090104A (zh) 用于获取网页信息的方法和装置
CN105005600A (zh) 一种访问日志中url的预处理方法
CN102929902A (zh) 一种基于中文检索的分词方法及装置
CN109033282A (zh) 一种基于抽取模板的网页正文抽取方法及装置
CN102760150A (zh) 基于属性重现和标签路径的网页抽取方法
CN105302876A (zh) 基于正则表达式的url过滤方法
CN107145497A (zh) 基于图像和内容的元数据选择与内容匹配的图像的方法
CN104462504A (zh) 基于搜索中提供推理过程数据的方法和装置
CN107463592A (zh) 用于将内容项目与图像匹配的方法、设备和数据处理系统
CN105095391A (zh) 利用分词程序识别机构名称的装置及方法
CN106528068A (zh) 一种网页内容重构方法和系统
CN109614535A (zh) 一种基于Scrapy框架的网络数据的采集方法及装置
CN102902790B (zh) 网页分类系统及方法
CN106874502A (zh) 一种视频搜索的方法、装置及终端
CN105117434A (zh) 一种网页分类方法和系统
CN106776640A (zh) 一种股票资讯信息展示方法和装置
CN107193870A (zh) 网页内容的提取方法和系统
CN104778232B (zh) 一种基于长查询的搜索结果的优化方法和装置
CN104572874B (zh) 一种网页信息的抽取方法及装置
CN114117242A (zh) 数据查询方法和装置、计算机设备、存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 730000 Zhang Suzhou beach, Chengguan District, Lanzhou City, Gansu Province, No. 553

Applicant after: China Power World Wide Information Technology Co.,Ltd.

Address before: No. 553, zhangsutan, Chengguan District, Lanzhou City, Gansu Province

Applicant before: GANSU WANWEI Co.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant