CN105069004A - 专利信息自动采集方法 - Google Patents
专利信息自动采集方法 Download PDFInfo
- Publication number
- CN105069004A CN105069004A CN201510351147.XA CN201510351147A CN105069004A CN 105069004 A CN105069004 A CN 105069004A CN 201510351147 A CN201510351147 A CN 201510351147A CN 105069004 A CN105069004 A CN 105069004A
- Authority
- CN
- China
- Prior art keywords
- search
- retrieval
- patent information
- information automatic
- acquiring method
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种专利信息自动采集方法,其包括以下步骤:确定采集对象;设置检索关键词;进行检索并生成表单数据;提供专利链接。采用上述方案,本发明通过在本地生成表单数据并提供专利链接,实现了本地化的专利信息采集管理,还能够在检索时基于主题定制,减少企业、单位人力与设备等投入的费用,节省物力、时间和金钱上的开销。
Description
技术领域
本发明涉及信息自动采集,特别是涉及一种专利信息自动采集方法。
背景技术
目前在我国专利信息搜索引擎与工具中,常见的有国家知识产权局专利检索、Cnpat、Soopat、谷歌专利搜索、百度专利搜索等。但是在这几个网站中,有的需要付费服务、有的专利数据库更新缓慢。另外在功能和操作上并不能满足用户企业的需求,不能够对查询出的专利进行批量的管理和分析。
专利的检索与专利的数据分析为何在众多科研人员和企业中受到重视?在研发新产品之前,进行充分的市场调研,查阅有关的科技期刊、杂志等科技资料,这是新产品研发人员通常要做的事情。但是,为此进行专门的专利检索,却往往会被忽略掉。事实上,检索专利文献对于科学地确立新产品科研课题至关重要。首先,通过专利检索,可以判断科研立项的必要性。世界上90%~95%的最新技术都记载在专利文献中,进行较为全面的专利检索,即可确定自己的新产品研发课题是否有必要立项,如若已有相同的新技术申请了专利,那么再予立项,必然导致研发雷同,浪费人力和财力,并且自己辛辛苦苦研制出的新产品,还有侵犯他人专利权的风险,必然会受制于人,实在是得不偿失。其次,通过专利检索,研发人员可以使自己在相关专利技术的基础上,确立新产品研制的起点,避免重复投入和重复研制,同时可以避免侵权情况的发生。再者,通过专利检索,可以了解竞争对手产品研发的主导方向,做到知己知彼,从而据此作出正确的决策,确保自己企业在市场竞争中赢得主动权。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明所要解决的技术问题是,提供一种专利信息自动采集方法。
本发明的技术方案如下:一种专利信息自动采集方法,其包括以下步骤:确定采集对象;设置检索关键词;进行检索并生成表单数据;提供专利链接。
例如,所述检索关键词至少包括专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请人、专利权人、申请人地址、发明设计人、专利代理机构、代理人、主分类号其中之一。
又如,根据专利链接获取相关专利。
优选的,进行检索之前,还根据检索关键词生成检索表达式。
优选的,根据检索关键词自动生成检索表达式。
优选的,根据预设规则自动根据检索关键词生成检索表达式。
优选的,根据检索关键词自动生成检索表达式之后,进行前置检索。
优选的,所述前置检索中,判断前置检索得到的检索结果数量是否大于预设阈值,是则进行拆分。
例如,拆分之后进行检索并生成表单数据。
优选的,根据专利分类号进行拆分。
优选的,在Linux服务器上运行爬虫程序进行检索。
优选的,进行检索时,对返回的网站信息进行全局正则表达式匹配。
优选的,进行检索之后,把采集到的专利信息生成表单数据,存储在服务器的数据库中。
采用上述方案,本发明通过在本地生成表单数据并提供专利链接,实现了本地化的专利信息采集管理,还能够在检索时基于主题定制,减少企业、单位人力与设备等投入的费用,节省物力、时间和金钱上的开销。
附图说明
图1是本发明一个实施例的示意图。
具体实施方式
为更好的说明本发明的目的、技术方案和优点,下面将结合附图和具体实施例对本发明作进一步说明。
例如,如图1所示,本实施例提供了一种专利信息自动采集方法,其包括以下步骤:确定采集对象;设置检索关键词;进行检索并生成表单数据;提供专利链接。需要说明的是,本发明及其各实施例的目的是解决发明提出的问题,实现专利信息自动采集,与专利信息服务器或者网站等目标采集对象进行信息交互,生成可供本地检索的表单数据,提供与远端的目标对象的专利数据匹配的专利链接,其属于全部或部分以计算机程序处理流程为基础,通过计算机执行按上述流程编制的计算机程序,对作为计算机外部对象的目标采集对象进行信息检索与收集,对作为计算机内部对象的检索关键词、表单数据以及专利连接进行数据处理,实现了专利信息自动采集的解决方案。对外部数据进行处理与交换,对计算机系统内部资源进行了分配与归集管理,实现了外部数据传输及内部生成表单数据,不仅仅涉及一种算法或者数学计算规则或者程序本身或者游戏的规则和方法,因此该本发明及其各权利要求实质上不仅仅涉及智力活动的规则和方法,属于专利保护的客体。
下面继续举例说明本发明。例如,一种专利信息自动采集方法,其包括以下步骤。
确定采集对象;例如,根据目标检索网站,确定采集对象;下面各实施例主要以soopat网站为采集对象,可以理解的是,本发明同样适用于其他类似的专利检索网站,包括sipo、uspto、5ipatent、patentcloud等。又如,提供选择项,由用户自行选定采集对象。优选的,还包括步骤:确定采集对象中的子目录项,例如,其后根据所述子目录项设置检索关键词。这样,可以对一个复杂的目标对象,选取其中一个小范围,例如sipo网站的某一系列专利的子集,或者soopat网站的专利类型的子集等。
设置检索关键词(keyword);例如,所述检索关键词至少包括专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请人、专利权人、申请人地址、发明设计人、专利代理机构、代理人、主分类号其中之一;例如,所述检索关键词包括专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请人、专利权人、申请人地址、发明设计人、专利代理机构、代理人或主分类号,又如,所述检索关键词包括专利名,以及专利号或申请号;又如,所述检索关键词包括专利代理机构或代理人、以及主分类号;又如,所述检索关键词包括专利权人、法律状态以及主分类号,以此类推。
又如,所述检索关键词为非完整词语,例如,专利名为“太阳能非接触式充电器”,所述检索关键词为“充电器”;优选的,所述检索关键词还包括重点标记,用于标记最重要的、检索结果中必须存在的某一检索关键词,例如,所述重点标记为字符“#”或“$”,这样,在检索时可以精准匹配某一检索关键词,模糊匹配其它检索关键词。例如,检索关键词为“$LED广东2013”,则在检索时精准匹配LED,模糊匹配广东与2013;又如,检索关键词为“#LED碳化硅”,则在检索时精准匹配LED,模糊匹配碳化硅;以此类推。这样,可以获得较好的检索效果。例如,所述检索关键词还包括重点标记,根据检索关键词生成检索表达式时,在检索表达式写入所述重点标记及其所标记的某一检索关键词,然后进行检索并生成表单数据,在检索时精准匹配所标记的某一检索关键词,模糊匹配其它检索关键词。
优选的,还根据检索关键词生成检索表达式。例如,进行检索之前,还根据检索关键词生成检索表达式。又如,根据检索关键词自动生成检索表达式。例如,自动将多个检索关键词以“and”(“和”)的关系,生成检索表达式。又如,自动将多个检索关键词以“or”(“或”)的关系,生成检索表达式。优选的,根据预设规则自动根据检索关键词生成检索表达式。例如,所述预设规则为将各检索关键词以“and”的关系进行组合;又如,所述预设规则为将前面多个检索关键词以“and”(“和”)的关系进行组合,然后以“or”(“或”)的关系加上最后一个检索关键词;例如,自动将前面多个检索关键词以“and”(“和”)的关系进行组合,然后以“or”(“或”)的关系加上最后一个检索关键词,生成检索表达式。又如,所述预设规则为将后面各个检索关键词以“and”(“和”)的关系进行组合,然后以“or”(“或”)的关系加上前面的第一个检索关键词。又如,所述预设规则为将前面的第一个检索关键词加入重点标记,将各检索关键词以“and”的关系进行组合。又如,所述预设规则为将前面的第一个检索关键词加入重点标记,并将后面各个检索关键词以“or”的关系进行组合,将以“and”的关系与加入重点标记的第一个检索关键词进行组合。
优选的,根据检索关键词自动生成检索表达式之后,进行前置检索。例如,所述前置检索中,判断前置检索得到的检索结果数量是否大于预设阈值,是则进行拆分。例如,拆分之后进行检索并生成表单数据。优选的,根据专利分类号进行拆分。这样,每次检索可以得到不超过一个最大值的检索结果。例如,所述预设阈值为100、200、500、1000或10000等。从而可以避免每次检索结果过多导致表单数据出错或者被采集对象拒绝。又如,所述前置检索中,判断前置检索得到的检索结果数量是否大于预设阈值,是则根据专利分类号进行拆分,为每一拆分后的检索表达式继续进行所述前置检索,直到拆分后得到的各个检索表达式的检索结果数量均小于所述预设阈值,然后直接将拆分后得到的各个检索表达式的检索结果生成表单数据,或者,根据拆分后得到的各个检索表达式进行检索并生成表单数据。所述前置检索是要拆分后得到的各个检索表达式的检索结果数量都小于一个预设阈值,此时可以得到各个检索表达式的检索结果,也可以仅得到各个检索表达式的检索结果数量,如果有检索结果的话,则直接根据拆分后得到的各个检索表达式的检索结果生成表单数据,如果仅有检索结果数量,则根据拆分后得到的各个检索表达式进行检索并生成表单数据。
优选的,所述前置检索之前,还预设置关联分类,例如,国际专利分类(InternationalPatentClassification,IPC)按五级分类:部、大类、小类、主组(大组)、分组(小组),例如,预先将两个小类关联,作为所述关联分类;又如,预先将两个大组关联,作为所述关联分类;又如,预先将数个小组关联,作为所述关联分类;并且,在所述前置检索中,根据专利分类号进行拆分时,在一个拆分后的检索表达式采用所述关联分类,例如,某一拆分后的检索表达式包括一个关联分类,例如,预先关联的两个大组,其他拆分后的检索表达式仅包括一个大组。以此类推。也就是说,采用关联分类的方式进行处理,以增强检索结果的关联性,符合某些领域的检索目的。
以国际IPC专利分类法对专利分为A-H八类,编写采集规则,将各类专利的URL提取并保存入库。然后再以采集到的URL为目标进行二次采集,提取采集到的专利名称和专利号进行入库保存。最后以采集到的专利号为目标,对专利的各种详细内容,如专利权人、发明设计人、专利代理机构、公开日等进行爬取入库。例如,设计3个专利信息采集并行进程,实现对中国专利信息的自动下载。例如,根据国际IPC专利分类法将专利分为A~H八大类型,用户可以使用本系统将某一类型的专利信息采集到数据库,然后在前端显示检索要查询的专利信息。因此其基本功能包括专利信息采集、简单检索、高级检索与专利数据导出。优选的,用深度优先遍历的方法来实现专利分类地址采集,此时,分类号地址采集的速度比较快。优选的,还加入测试程序或无效程序,以在运行时消耗时间,避免数据异常或者程序出错。
进行检索并生成表单数据;例如,采用数据库存储所述表单数据。又如,所述表单数据包括专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请人、专利权人、申请人地址、发明设计人、专利代理机构、代理人、主分类号中的一项或多项。例如,专利信息检索之后,把存储在本地数据库中的专利信息,按照一定的条件检索展现出来,并进行相应的管理。
提供专利链接。例如,根据专利链接获取相关专利。这样,既尊重采集对象的网站的版权,又减少了下载的数据量。
与上述任一相关实施例相结合,又一个例子是,在Linux服务器上运行爬虫程序进行检索。优选的,进行检索时,对返回的网站信息进行全局正则表达式匹配。优选的,进行检索之后,把采集到的专利信息生成表单数据,存储在服务器的数据库中。
例如,一个应用的例子是,采用LAMP组合搭建应用程序平台,其包括Linux操作系统、Apache服务器,MySQL数据库和PHP开发语言。该组合免费和开源,是一个具有活力的解决方案包。对于B/S架构技术,举例说明如下。
设计中的采集器即爬虫程序定位在Linux服务器上运行,因为爬虫程序24小时都会在服务器上运行,Linux服务器确保运行时的高效与稳定。
PHP本身不支持多线程,但是可以利用Linux的多进程来模拟采集器运行时需要的多线程技术。爬虫的核心部分用到PHP中的libcurl库,该库允许你与各种的服务器使用各种类型的协议进行连接和通讯,其中包括http、https、ftp、telnet等协议。licurl库向目标服务器发送HTTP请求,并返回网站信息内容。
preg_match_all()函数,可以对返回的网站信息进行全局正则表达式匹配。
MySQL是一个开源的关系型数据库,Mysql对PHP有很好的支持,其体积小、速度快,但支持多种存储引擎,可以处理拥有上千万条记录的大型数据库。因此本次设计用来存储采集器爬取的国专利信息数据,方案可行。
例如,在几个主流的专利搜索网站中,采用Soopat网为采集对象,因为该网站的专利检索表单以get的方式传递,更方便采集器提取URL进行采集下载。
例如,采用上述方法,以中国专利为目标,以Soopat专利搜索网站为对象,以国内外专利信息采集和分析的相关理论和相关的爬虫技术为基础,设置中国专利信息自动采集方法及其分类器、采集器。
例如,采集器工具面向的使用对象为管理员,管理员通过使用WEB表单来调用shell脚本,从而激活爬虫程序。当然,在windows上也可以使用cygwin来搭建shell环境。爬虫程序把采集到的专利信息存储在服务器的数据库中。前台的专利检索界面的操作就像使用百度、谷歌搜索引擎一样方便,适合广大的用户快捷地使用。
例如,对于单位用户或者学校用户,本方法的爬虫程序运行在安装Linux系统的服务器上,而该服务器可以为平常使用的普通的pc机。爬虫程序需要对外爬取数据,需要连接外网。至于检索模块,其原理是将后台数据库的信息显示到前端。如果是企业或某单位内部使用,检索模块可以搭设在内部服务器上,无需连接外网,或脱机运行也可。因此,根据成本效益分析法,软硬件资源都已具备,且成本相对较低。
例如,专利检索界面的设计要求,用户可以通过专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请(专利权)人、申请人地址、发明设计人、专利代理机构、代理人、主分类号等信息进行查询。
下面继续给出几个信息采集实施例。
例如,用户查询到专利后,页面跳转到列表页,每页显示10行专利。点击专利名称,程序跳转到专利信息页面,该页面展示的信息同样包括,专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请(专利权)人、申请人地址、发明设计人、专利代理机构、代理人、主分类号等数据。该界面提供了“下载专利”的按钮,用户点击按钮可以下载相对应的PDF格式的专利文件。
例如,检索采集包括:专利的分类地址采集、专利号采集、专利内容采集。检索还包括:简单搜索、高级检索、专利分类、专利管理。为了抵御采集源网站的反爬虫技术,和实现专利信息采集的高效率,以及采集时的稳定性。采集部分没有设计WEB界面,它的三个功能对应三个脚本,在终端bash界面里显示它的运行状态。具体功能如下。
专利的分类地址采集:SooPat网里面,普通用户只能搜索的专利只能显示前1000条。其目的一来可以保障网站数据的安全,二来可以控制服务器的负荷量。因此想要显示所有被检索到的专利,只有升级为vip用户。接着检索A至H八类专利,然后分别将这八类专利信息采集入库。为了减少企业单位对资金的投入,本设计拟对每一类的专利地址进行解剖,直到利用解剖后的分支的URL查询出来的专利数目小于1000为止。例如,将A类专利四次分解,最后确保第四次分解的子分类A01B/00、A01B3/00等检索出来的专利数目在一千之内。
专利号采集:例如,将八类专利四次分解之后,得到的子分类相对应一条URL地址。每条URL地址对应若干条专利,这些专利在SooPat网是以列表的形式显示出来。用户必须点击专利名称,才能查看详细的专利信息,如摘要、主权项等。“专利号采集”模块的设计旨在采集每个列表页面的专利号,然后才可以根据专利号对专利的详细信息进行爬取。专利号采集模块将每一页的专利号采集入库,同时将专利名称赋值为零,其意义将会在一下内容阐明。
专利内容采集:例如,采集的专利内容有专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请(专利权)人、申请人地址、发明设计人、专利代理机构、代理人、主分类号、分类号、主权项等内容。专利内容采集模块提取数据库中的专利号,根据专利号可以将以上信息更新到数据库。在多线程更新数据库的同时,为了防止爬虫程序重复更新数据库,致使时间和资源上造成了巨大的损耗。数据库的内容表会将某一个字段的值设为一个固定的值,如设专利名的值为零。此时,后台程序只要将内容表中专利名为零的某一行更新即可。
当爬虫程序将专利信息采集入库时,我们需要将专利信息按照一定的条件显示在前端界面中。检索模块部分的设计,就是为使用者提供这个用途。以下为检索部分的四个功能模块的概要设计。
简单搜索:例如,简单搜索页面,核心的部分为一个输入框和一个提交按钮。它的操作就像用户平常使用的百度、谷歌搜索引擎一样,输入关键字,得到查询到结果。在这页面的输入框里面输入用户需要查询的专利名称,后台数据库通关关键词进行模糊查询,然后将查询到的结果返回列表页面,关键词以红色标注高亮显示。
高级检索:例如,高级检索相比简单搜索,除了可以检索专利名称以外,还可以根据专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请(专利权)人、申请人地址、发明设计人、专利代理机构、代理人、主分类号、分类号、主权项等信息进行专利检索。其设计原理与简单搜索一样,都是向数据库提交关键词,然后模糊查询,最后将结果显示于列表页。列表页每页显示10条专利内容,每条专利内容有专利名称、专利号、法律状态、摘要(前100字)的信息,同理每页的专利信息会对检索的关键词以红色高亮标识显示。法律状态拟用三种颜色显示,目前处于有权状态的专利,法律状态以绿色高亮显示;审核中的专利,以黄色高亮显示;法律状态处于无权的专利,将会以灰色高亮显示。
点击专利名称,进入专利信息内容页。此页面将专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日等15项专利信息按照规定的样式显示于前端。页面底端提供下载专利PDF文档的按钮,用户点击此按钮将会跳转到SooPat网PDF文档下载的页面。据了解,由于SooPat网对此类文档有版权,本发明各实施例不对PDF进行直接下载,而是为用户提供下载途径。
专利分类:例如,专利分类部分向用户提供了在专利IPC分类中,A至H八类专利的详细目录。此部设计的目的是为了让用户了解,需要检索的专利属于哪个范畴。当用户需要对某个范围内的专利进行检索时,此部分的设计给予用户很大的帮助。
专利管理:例如,专利管理的功能界面很简单,就一个form表单。里面就是一个输入框,一个提交按钮。在输入框里面输入登录口令,口令正确时,会跳转到另一个页面。此页面告诉管理员(拥有登陆口令的使用者),采集模块的三个脚本的位置和专利采集的操作过程以及详细步骤。此部分并不是管理员操作的部分,它不是让管理员对它做什么,而是告诉管理员他应该怎么做,以此避免服务器被非管理员用户非法操作。
生成表单数据时,采用数据库实现,例如,数据库的设计采用两类表,静态存储表和动态存储表。静态存储表的数据是固定的,一般不会变动。例如,其中有两个是规则存储表,专利采集规则表num_search和专利号采集规则表search,用来存储采集规则的正则表达式。动态存储表的数据是变动的,会不断地更新。如flha至flhh的八个URL地址采集表,把URL地址存在八个表中,其目的是为了让爬虫程序进行多任务采集。另外还有一个内容存储表content,用来存储采集到的专利信息。
例如,专利内容存储表:专利内容的属性有专利号、专利名、摘要、专利类型、专利号、申请号、公开号、法律状态、申请日、公开日、申请(专利权)人、申请人地址、发明设计人、专利代理机构、代理人、主分类号、分类号、主权项。
例如,专利号采集规则表:该表的属性有采集地址规则、专利号规则、页码规则。
例如,专利采集规则表:专利采集规则表的数据项与专利内容采集表的相仿,它的属性有专利号采集规则、专利名采集规则、摘要采集规则、公开号采集规则、法律状态采集规则、申请日采集规则、公开日采集规则、申请(专利权)人采集规则、申请人地址采集规则、发明设计人采集规则、专利代理机构采集规则、代理人采集规则、主分类号采集规则、分类号采集规则、主权项采集规则。
例如,专利A分类地址采集表:按照字母A-Z的顺序,与该表相仿的还有专利B分类地址采集表、专利C分类地址采集表,一直到专利H分类地址采集表。以专利A分类地址采集表为例,该表只有一个属性:地址。
例如,采用专利内容存储表(content)存储所述表单数据,专利内容存储表是内容采集的核心,它承载着数据库的绝大部分内容。里面记录着关于中国专利的详细信息。例如,建立patent数据库,然后在patent数据库中建立一个命名为content的“规则存储表”,作为所述专利内容存储表,其结构如下所示。
又如,对专利分类地址采集表进行设计处理,以A类为例,从字母A-H的顺序,专利分类地址表共有8个,例如分别为flha至flhh,代表专利IPC分类中的8个类别,每个类别对应flh中的一个表。它们的作用是存储采集到的分类地址。下面以创建flha为例,如下表所示。
字段 | 数据类型 | 长度 | 是否NULL | 默认值 | 字段说明 |
addrA | varchar | 200 | 否 | 主键 |
又如,专利采集规则表(num_search)与专利内容存储表相对应,采集器根据分类号地址表中的地址,和专利采集规则表中的各个规则进行采集,然后将采集到的专利信息保存到专利内容存储表中。结构如下表所示。
又如,专利号采集规则表(search)的结构如下表所示。
例如,待采集列表页面形式可以分为单页网址、多页网站、复合页网址3种。根据页面的不同类型采用不同的流程控制,下面给出一个具体的实施例,其流程控制代码如下:
上述代码通过switch()函数判断链接的类型,然后根据链接“特征”匹配正则表达式的规则获取指定的内容,这里可以将switch()函数看作程序的流程控制器。CURL是一种功能强大的库,支持很多不同的协议、选项,能提供URL请求相关的各种细节信息。
当获得待下载的列表页面后,就可以提取需要的信息了。该程序功能最重要的就是提取正则表达式的部分,因为只要获得部分采集者认为有意义的信息即可。内容获取部分,下面给出一个具体的实施例,其流程代码如下:
其中,变量$list_data[1]代表已获得的列表数组,$content_match代表正则表达式匹配链接内容的规则。其中核心的部分是两个函数,即file_get_contents()和preg_match_all()。preg_match_all()是正则函数,用来安装正则表达式定制的规则并提取相应的内容。
由于PHP脚本有30秒的执行限制,当执行时间大于30秒时,系统会报一个超时的“致命级”错误终止程序运行,所以在抓取大量内容时需要应用延时函数,下面给出延时函数的一个例子。
<?php
//功能:延时函数
$ch=curl_init();
//设置超时时间
$timeout=100;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$handles=curl_exec($ch);//执行句柄
curl_close($ch);//关闭连接
?>
在之前已经引用了CURL库(PHP自带有)上述函数的核心是curl_setopt()函数,它将为一个CURL会话设置选项。该函数的描述如下:
boolcurl_setopt(intch,stringoption,mixedvalue)
其中,option参数是具体的操作设置,value是这个选项给定的数值。
在执行以上的步骤后,所述专利信息自动采集方法已经获得了所需的内容信息。在对页面进行分页分析整理后全部列出形式。
上述代码通过分页的规则匹配出分页列表,然后通过查找每个分割单元里的网址,通过for函数排除重复网址,从而获得全部列出形式的列表数组。
又如,当专利信息过多时,采用分页的形式进行显示,这样保证了页面的整体美观。但是对于采集程序而言就需要多做一步分页的分析工作,程序根据不同的分页样式分析出上下页形式。
上述代码根据获得分页规则的不同,匹配不同的上下页形式,通过while()函数嵌套if()函数,对获得内容过程中的异常状态进行排除处理。
例如,在SooPat专利查询网中,用户可以在“表格检索”页中输入专利分类号来查询专利,但对于普通用户而言,查询的专利只能显示前1000条。因此,优选的,所述专利信息自动采集方法需要将每一类专利的分类号进行分解,直到检索出来的专利数目小于1000条。例如,引用深度优先算法来实现拆分或分解,下面以对A类专利分类号地址爬取的过程来阐述。
深度优先搜索遍历类似于树的先序遍历。假定给定案例G的初态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作:
(1)访问搜索到的未被访问的邻接点;
(2)将此顶点的visited数组元素值置1;
(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。
深度优先搜索DFS可描述为:
(1)访问v0顶点;
(2)置visited[v0]=1;
(3)搜索v0未被访问的邻接点w,若存在邻接点w,则DFS(w)。
例如,将A类专利分类号定义为一棵树,利用深度优先遍历的前序遍历方法来搜索这棵树。分类号A为整棵树的根节点,A01、A21、A31为它的叶,A01B、A01C、A01D又为A01的叶。A01B1/00、A01B3/00、A01B5/00又为A01B的叶,以此类推。
遍历过程:
下面以a为分类号A的URL地址,b、c代表A01、A21的URL,d、e、f代表A01B、A01C、A01D的URL,j、k、l代表A01B1/00、A01B3/00、A01B5/00的URL,以此类推。DFS从a节点开始出发,访问它的左枝b节点;再从b节点开始出发,访问它的子节点d,再由d节点开始访问它的子节点就j。进行类似的访问,…如此进行下去,直至到最底层的节点被遍历完为止,例如,它遍历的路径为:a->b->d->j->k->l。
当最后一层节点被采集完后,接着退回一步,退到前一次刚访问过的顶点的兄弟节点e,看e节点是否还有子节点。如果有,继续遍历,之后再从此顶点的兄弟节点出发,进行与前述类似的访问;如果没有,就继续访问它的兄弟节点f,然后重复类似的访问,直到该顶点的兄弟节点被遍历完为止。接着就再退回一步访问上一层节点,对其兄弟节点进行类似的搜索。重复上述过程,直到整棵树被遍历完为止。其遍历的途径为:a->b->d->j->k->l->e->f->c->g->h->i。
例如,所述专利信息自动采集方法采用爬虫程序对A类地址进行深度为4的遍历之后,得到的URL地址将被保存到专利分类地址采集表中,A类地址被保存到表flha,B类地址遍历完之后被保存到flhb,以此类推。由于mysql是一个高并发的数据库,因此八类专利地址的采集任务可以同时执行。因为php对多线程的支持暂时不是很理想,优选的,利用Linux系统下的多进程来虚拟多线程。例如,创建一个shell脚本,在里面写入一下代码:
#!/bin/bash
/opt/lampp/bin/php-q/opt/lampp/htdocs/chong/collect/collect.phpA&
/opt/lampp/bin/php-q/opt/lampp/htdocs/chong/collect/collect.phpB&
……
以上代码表示,同时对A、B…等多个专利号进行采集。第二行代码表示用php脚本执行collect.php文件,并向该文件传递一个“A”参数,“&”表示让程序在后台执行,这是让程序多进程执行的关键部分。
打开一个bash为一个进程,比如这个进程号为“9527”。在终端里面执行shell脚本,shell脚本里面多个采集进程,比如“10000”,“10001”,“10002”等进程是在“9527”这个进程下产生的,所以这些进程均为“9527”的子进程。
例如,所述专利信息自动采集方法中,一条分类号地址,对应多个专利号。取出存放在专利分类地址采集表中的一条URL,可以访问到这个分类的所有专利。从专利采集规则表(num_search)中,提取专利号规则,然后根据正则表达式匹配,把匹配到的专利号保存到专利内容存储表(content)中。例如,SooPat网的专利列表页,每页显示10条专利。爬虫程序在采集完第一页专利号之后,继续采集第二页、第三页,直到采集完为止。从num_search表中可以提取页码的匹配规则,从中可以采集到每个URL对应的页码数。又如,get_contents()函数来采集URL,通过对URL的解析,可以得到相应的页码数。
有了页码数之后,就可以进行多页采集。另外Soopat网的编码为UTF-8模式,需要将页面转换成GB2312或GBK模式,否则会采集不到任何数据。
在短时间内向服务器发送多次请求时,如果服务器检测到此网络数据流异常,会禁用来自发送请求的客户端的IP地址。因此,当网络重连5次的时候依旧失败,爬虫会自动更改代理服务器IP地址,然后暂停5秒,用于模仿一个正常使用者访问网站的行为。
由于分类号地址和专利存在一对多的关系,这表明采集专利号对时间的开销和资源上的占用比分类号地址采集过程中大的多,因此多进程采集数据,也是一个必不可少的方法。每个专利分类地址采集表中都有若干条地址,下称为URL队列。拟设计一个进程采集URL队列的前10条,第二个进程采集URL队列的第11条至第20条,第三个进程采集URL队列中的第21至30条,第四个进程采集URL队列中的第31至40条,第五个进程采集URL队列中的第41至50条。当第一个进程采集完第1至第10条地址后,直接跳到第51至60条地址,当这10条地址也采集完后,进程向后50条地址开始采集10条。其他进程的采集过程与第一个进程的类似,每格50条地址,采集10条URL,直到整个URL队列被采集完为止。每个专利分类地址采集表都可以使用该方法进行多进程采集,因此可以编写一个shell脚本,在bash下创建8个子进程,分别对应A-H的8URL队列。8个子进程中每个子进程下又创建5个子进程,对每个分类号地址的URL队列进行采集。
例如,当URL队列的地址全被采集完后,专利内容存储表(content)中保存全部已被采集的专利号信息。又如,content表中,数据项name,即专利名称默认值为0。
当专利内容被更新的时候,name为0的值会被覆盖。所以在专利内容采集模块设计中,只要对content表中name为0的行更新即可,这样很大限度上避免了重复更新对资源造成的损耗。
其中,while循环中的执行条件是,选出content表中name为0的行数,当该行数大于0的时候循环体内中的代码才会被执行。专利内容采集过程是三个采集过程中消耗最大的,因为content表需要更新的内容非常多,有专利名、摘要、专利类型、专利号、申请号、法律状态、主权项、申请人、代理机构等内容。因此专利内容采集过程也需要多进程来实现多任务,但是其多进程的方法和前面两个有些不同。因为随着采集程序不断地更新数据库,content表中name为0的行数越来越少。进程在采集的过程中需要知道这个行数的变化,而不必导致多个进程交叉更新数据库。
例如,在此采集模块中同样创建5个进程,假设content表中name为0的数目为需要更新的总数目,记为n,其中n>0,第一个进程选出n中的一条数据,从表标识为0的地方开始。用sql语句来表达为:SELECTnumFROM`content`wherename='0'limit0,1.进程2从第100行开始选出一条数据来更新,进程3从表的第200行的位置开始,进程4从第300行的位置开始,进程5从第400行的位置开始。由此可见,每个进程开始的地方之间的偏移量为100条数据,如果设定每个进程之间偏移量过小的话,5个进程会同时交叉更新一些数据。随着采集过程的推进,n的值会越来越小,当300<n<400的时候,进程5返回可更新的数目为0,进程5会自动摧毁。同理,当200<n<300时,进程4也会自动摧毁。因此,偏移量的值也不宜设置过大,偏移量的值越大,进程自动销亡的时间越早。
专利的信息内容采集于网页,当字符串之间带有引号之类的符号,会导致更新数据库失败,返回sql语法错误的提示。优选的,需要对采集下来的文字进行加工处理,才能够入库。例如,定义一个处理字符串的方法。其中,检索部分区别于采集部分的是,采集部分在服务器后台一直运行,直到专利信息全部被采集完为止。而检索部分在前端显示,给广大的用户操作,进行专利的检索。
其中,简单搜索页面的设计较为简洁,一个文本框,一个提交按钮,即可。按钮点击的事件是查询专利内容存储表中,以输入框的内容为关键词的专利名。例如,此事件用javascript来实现。
高级检索部分,例如,使用专利号、专利名、摘要、专利类型、专利号、申请号、分类号等信息进行专利的检索,其实现的原理就是用数据库通过关键词进行模糊查询,sql语句表达式为:select*fromcontentwherenamelike"%text.value%"。其查询的事件也是通过javascript来实现。
例如,简单搜索和高级检索都是通过javascript向list.php页面传递参数,list.php为列表页,对简单搜索和高级检索页面传递过来的参数进行处理。
又如,表单数据即检索列表页,其主要的功能是将用户检索到的专利信息,以列表的形式输出到浏览器中,该页面同时提供了简单搜索功能,用于对专利名称的查询,便于用户在浏览查询结果的同时对专利进行二次查询。
例如,被查询到的专利,会在列表中显示它的专利名、专利号、法律状态、申请人、申请日、主分类号和摘要内容的前100字。列表中显示的内容,对检索的关键词进行红色高亮显示,文本关键词红色高亮显示的代码将会在附录中展示。例如,简单搜索和高级检索通过javascript向list.php页面传递参数。
例如,从搜索页中接收到的参数"name",然后数据库进行模糊查询。然后循环读取数据库的内容,将其放在table表单中。
提供专利链接;例如,点击列表页中的专利名称,将跳转到专利内容页面。例如,将数据库的内容提取到web页面上。
例如,还包括步骤:查阅专利分类号;这样,用户对专利分类查询,但又不了解需要检索的专利属于哪个分类的时候,可以查阅专利分类号。
例如,PHP通过浏览器执行的时间限制是30秒,超过这个时间限制程序会被判定异常,系统会报出一个“致命级”的错误终止程序运行。因此,根据PHP的连接处理机制解决时间限制问题。在PHP内部系统维护连接状态,其状态有3种可能的情况:0-NORMAL(正常);1-ABORTED(异常退出);2-TIMEOUT(超时)。
当连接时间超过PHP的时限时,TIMEOUT状态的标记将被打开。该标记决定脚本是否需要在客户端中断连接时退出。有时让脚本完整地运行会带来很多方便,即使没有远程浏览器接受脚本的输出。通过上面的分析,可以了解采集程序抓取内容超时的原因。例如,在检索时采用延时函数实现,就可以解决执行超时的问题了。
又如,在检索之前解除超时限制。例如,如果用户有管理服务器的权限的话,可以打开php.ini,找到"max_execution_time=30",将“30”修改为更大的值,或者修改为“0”,零表示程序执行时超时的时间无限制。
通常情况下,在采集的过程,由于客户端在一个很短的时间内向服务器发送多个请求,请求者在极短的时间里连续访问不同的页面,这不是一个用户正常访问网站的行为。服务器端检测到该异常的网络数据流,会封锁来自该客户端的IP。这会使在采集的过程中造成中断,或采集失败。例如,采用以下一种或多种方式进行检索。a)本地缓存,或只定时采集,这对于采集的数据量不是很大的用户可以考虑。b)设置一个代理数组池,然后在采集的过程中随机设置代理IP地址。使用adsl的用户,当无法采集的时候,也可以重新拨号,换个IP地址即可。c)模拟正常使用者浏览网站的行为,每隔一段时间,或每采集完一批数据,程序更换一个代理IP,并暂停5秒,然后继续采集。d)PHP使用curl函数来伪造来源、伪造ip。
下面对专利信息自动采集方法进行测试说明。例如,在bash环境下,进入目录/opt/lampp/htdocs/chong/collect/,然后执行collect.sh脚本,使用深度优先遍历的方法来实现专利分类地址采集,因此分类号地址采集的速度比较快。在collect.php文件中加入测试程序运行时消耗的时间。
例如,经测试,第一个进程采集完A类专利URL队列所使用的时间,共1396.891s。分类号地址采集完后,打开数据库,查看flha表,表里面保存了刚刚被采集完的A类地址。运行sql查询语句,select*fromflha,可以得到3724条记录。其中,专利号采集时用到了8个子进程,分别对A-H八类专利的采集。因为A类专利地址在本次测试之前已经采集完成,所以下面将对B-H的七个URL采集作为测试。例如,先创建7个URL队列采集子进程,然后每个子进程再创建5个采集进程,共35个进程。7个子进程当中,每个子进程又创建了5个子进程来对URL队列中的地址进行轮回的采集。从已经采集完的A类地址中可以看到,5个子进程采集的工作状态,其中,5个子进程是同时并发工作的。在一次测试中,当七个URL队列的地址全被采集完后,可以查看content表,一共得到3008271条记录。
此外,对于专利内容的采集同样是用到多进程模拟多线程的方法来采集。例如,采用5个子进程以轮询的方式,同时对content表中name为0的行更新。直到可更新的数目小于偏移量为止,进程才会自动销毁。
检索分为简单搜索和高级检索,其原理一样,是通过数据库模糊查询输入的关键词,然后将返回的结果输出web页面,并以列表的形式显示出来。下面对简单搜索页面进行测试,输入搜索词“转基因大豆”,可以在列表中查看到结果。
又如,在检索的时候,如果检索的内容在数据库里面查询不到,或输入词有误的时候,程序会跳转到一个错误页,提示用户更换搜索词
国内关于中国专利搜索的网站包括国家知识产权局、SooPat、专利之星、谷歌专利、百度专利等。国家知识产权局检索时响应速度很慢,重点是数据数据安全加密做得很好。专利之星也是一个挺不错的搜索网站,但是其表单时通过post的方式传递,与其他get方式传递专利数据的专利网站,正则匹配时要复杂得多。谷歌专利的服务器早已搬出了大陆,采集时候很慢,并且谷歌反爬虫的技术非常强,通常爬取谷歌专利中的内容时,不到2分钟就给谷歌封锁了IP。至于百度专利,其更新频率极低,数据极其滞后。Soopat网无论是查询的响应速度,还是专利信息的完善度,都是可以令人满意的。但是普通用户在SooPat网只能查询到专利的前1000条数据,判断前置检索得到的检索结果数量是否大于预设阈值,是则进行拆分,例如根据专利分类号进行拆分,通过将专利分类不断地细分,直到每个分类号查询到的专利小于1000条记录为止。
进一步地,本发明的实施例还可以是上述各实施例的各技术特征相互组合形成的专利信息自动采集方法,其具有以下优点:能够减少企业、单位人力与设备等投入的费用;为用户提供主题定制的专利数据库;对专利信息进行多条件检索;数据库的设计内容可以为用户后期进行批量管理。
最后所应当说明的是,以上所揭露的仅为本发明较佳实施例,不能以此来限定本发明之权利范围,以上实施例仅用以说明本发明的技术方案而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围,仍属本发明所涵盖的范围。
Claims (10)
1.一种专利信息自动采集方法,其特征在于,包括以下步骤:
确定采集对象;
设置检索关键词;
进行检索并生成表单数据;
提供专利链接。
2.根据权利要求1所述专利信息自动采集方法,其特征在于,进行检索之前,还根据检索关键词生成检索表达式。
3.根据权利要求2所述专利信息自动采集方法,其特征在于,根据检索关键词自动生成检索表达式。
4.根据权利要求3所述专利信息自动采集方法,其特征在于,根据预设规则自动根据检索关键词生成检索表达式。
5.根据权利要求3所述专利信息自动采集方法,其特征在于,根据检索关键词自动生成检索表达式之后,进行前置检索。
6.根据权利要求5所述专利信息自动采集方法,其特征在于,所述前置检索中,判断前置检索得到的检索结果数量是否大于预设阈值,是则进行拆分。
7.根据权利要求6所述专利信息自动采集方法,其特征在于,根据专利分类号进行拆分。
8.根据权利要求1至7任一所述专利信息自动采集方法,其特征在于,在Linux服务器上运行爬虫程序进行检索。
9.根据权利要求8所述专利信息自动采集方法,其特征在于,进行检索时,对返回的网站信息进行全局正则表达式匹配。
10.根据权利要求9所述专利信息自动采集方法,其特征在于,进行检索之后,把采集到的专利信息生成表单数据,存储在服务器的数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510351147.XA CN105069004A (zh) | 2015-06-23 | 2015-06-23 | 专利信息自动采集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510351147.XA CN105069004A (zh) | 2015-06-23 | 2015-06-23 | 专利信息自动采集方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105069004A true CN105069004A (zh) | 2015-11-18 |
Family
ID=54498377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510351147.XA Pending CN105069004A (zh) | 2015-06-23 | 2015-06-23 | 专利信息自动采集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105069004A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122495A (zh) * | 2017-05-24 | 2017-09-01 | 苏州唯亚信息科技股份有限公司 | 适用于专利公开科技数据库的信息抓取方法 |
CN107992544A (zh) * | 2017-11-27 | 2018-05-04 | 广州中龙信息科技有限公司 | 一种专利数据综合服务分析系统 |
CN108985979A (zh) * | 2018-04-18 | 2018-12-11 | 深圳智慧岛知识产权有限公司 | 一种基于网络提供知识产权服务的方法 |
CN113326280A (zh) * | 2020-02-28 | 2021-08-31 | 上海汉之宝信息科技有限公司 | 监控专利竞争对手的方法、系统及电子终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193923A (zh) * | 2010-03-05 | 2011-09-21 | 杭州华三通信技术有限公司 | 一种基于计算机程序的专利信息获取方法和装置 |
US20130086046A1 (en) * | 2011-10-03 | 2013-04-04 | Steven W. Lundberg | Patent mapping |
CN104199858A (zh) * | 2014-08-14 | 2014-12-10 | 中国科学技术信息研究所 | 专利文件的检索方法和可视化专利检索系统 |
-
2015
- 2015-06-23 CN CN201510351147.XA patent/CN105069004A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193923A (zh) * | 2010-03-05 | 2011-09-21 | 杭州华三通信技术有限公司 | 一种基于计算机程序的专利信息获取方法和装置 |
US20130086046A1 (en) * | 2011-10-03 | 2013-04-04 | Steven W. Lundberg | Patent mapping |
CN104199858A (zh) * | 2014-08-14 | 2014-12-10 | 中国科学技术信息研究所 | 专利文件的检索方法和可视化专利检索系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122495A (zh) * | 2017-05-24 | 2017-09-01 | 苏州唯亚信息科技股份有限公司 | 适用于专利公开科技数据库的信息抓取方法 |
CN107992544A (zh) * | 2017-11-27 | 2018-05-04 | 广州中龙信息科技有限公司 | 一种专利数据综合服务分析系统 |
CN108985979A (zh) * | 2018-04-18 | 2018-12-11 | 深圳智慧岛知识产权有限公司 | 一种基于网络提供知识产权服务的方法 |
CN113326280A (zh) * | 2020-02-28 | 2021-08-31 | 上海汉之宝信息科技有限公司 | 监控专利竞争对手的方法、系统及电子终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7747641B2 (en) | Modeling sequence and time series data in predictive analytics | |
Raghavan et al. | Crawling the hidden web | |
US7840604B2 (en) | Method, apparatus and computer program for managing the processing of extracted data | |
US8751466B1 (en) | Customizable answer engine implemented by user-defined plug-ins | |
US7418440B2 (en) | Method and system for extraction and organizing selected data from sources on a network | |
CN106096056A (zh) | 一种基于分布式的舆情数据实时采集方法和系统 | |
DE202015009301U1 (de) | Automatisches Crawling von Anwendungen | |
CN106126648B (zh) | 一种基于重做日志的分布式商品信息爬虫方法 | |
US20080301094A1 (en) | Method, apparatus and computer program for managing the processing of extracted data | |
Fileto et al. | POESIA: An ontological workflow approach for composing Web services in agriculture | |
CN105069004A (zh) | 专利信息自动采集方法 | |
CN115757689A (zh) | 一种信息查询系统、方法及设备 | |
Sharma et al. | A novel architecture for deep web crawler | |
Weichbroth et al. | Web user navigation patterns discovery from WWW server log files | |
Choudhary et al. | Role of ranking algorithms for information retrieval | |
CN113918460A (zh) | 页面测试方法、装置、设备和介质 | |
Beck | Agricultural enterprise information management using object databases, Java, and CORBA | |
Abu Bakar et al. | Base durian ontology development using modified methodology | |
Goldstein et al. | Addressing the ‘Tower of Babel’of pesticide regulations: an ontology for supporting pest-control decisions | |
Žemla et al. | Design and Implementation of the Application for the Irrigation System | |
Çifçi et al. | A search service for food consumption mobile applications via hadoop and mapreduce technology | |
Mohirta et al. | A semantic Web based scientific news aggregator | |
Sultan et al. | Scraping Google Scholar Data Using Cloud Computing Techniques | |
Lu | OntoKBEval: a support tool for OWL ontology evaluation | |
Olofsson | Evaluation of webscraping tools for creating an embedded webwrapper |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151118 |
|
RJ01 | Rejection of invention patent application after publication |