写在前面
整理专利的时候,在专利引擎上只能一条条的下载,很是烦人。我比较讨厌这种重复性劳动,所以每次碰上都得想想办法怎么自动化操作,虽然上每次研究自动化办法的时间把都足够把活干完了哈哈。可惜的是每次搞完都没有把文档保留下来,下次有点什么事情又得从头开始。因此准备开始写写文档记录一些思路,同时如果能帮到有需要的人就更好了!
适合人群
不会爬虫的都可以来看看!能大概看明白python就够了。
使用前提
- python环境配好
- 有梯子
- 不排斥键鼠记录器读取键鼠记录
基本思路
现在的专利搜索引擎大概都有批量下载库,如果只要摘要的话直接下载就可以了。但是下载全文的时候,大部分引擎都不支持批量下载,只能一个一个点,还得输验证码。
这里就不得不提到google patent了,这是我目前找到的唯一一个不需要验证码就能下载的专利引擎了(其实主要是还不会用python识别验证码)。那么有了google patent这个神器,就可以用自动办法来进行下载了。我这里使用的是按键精灵,傻瓜式操作。(没用python爬虫的原因是requests不能挂梯子。。。这里我不是很确定是什么问题,希望有大佬指点一下。anyway,主要思路就是用键鼠记录器点点点,我用的是按键精灵,理论上什么记录器都可以。
ps. 听说poxoq能批量下载,但是新版本只能下载前十页,因此我没有尝试,如果能直接下载全文的话请评论区告诉我。
键鼠记录器脚本
前期准备
- 按格式排好公开号或者申请号,在编辑器中打开;
- 把google patent搜索页面和文本编辑器分屏显示,便于操作。
脚本原理
以edge浏览器为例,按键精灵双击全选文本中第一行的公开号,ctrl+c复制,鼠标转到网页搜索框,ctrl+v粘贴,点搜索。等搜索完成右键download PDF,选链接另存为并确定,之后点击网页关闭下载栏,一次下载完成。返回编辑器,删除第一行的文本,把第二行提到第一行,完成复位。
这样就形成了完整的一次过程,只要重复运行脚本就可以把所有专利全文下载下来。
注意事项
实际操作中,可能遇到两大问题:
- 网页反馈问题
这里指的是搜索后没有来到我们想象中的专利页,可能是没有搜索到专利,或该专利google patent没有pdf文档,这时如果脚本还在运行,那么显然就会错误运行。 - 脚本运行问题
主要要考虑的是命令之间的延时。延时调小确实运行速度会变快,但是如果电脑运行速度不够或者网速/服务器慢了,就会错误执行命令。我的建议是文本操作可以适当删减延时,涉及网页的部分适量增加延时,保证脚本的容错率。
由此可以看出来这个脚本还是离不开人的,在跑的时候还是需要盯着点,如果有错误可以及时处理。
检查下载效果
看了上面的注意事项,想必你也知道这个脚本不太靠谱。那么解决这个问题的方法就是负反馈。下载完了检查一遍就好了。
由于google patent下载的文件是以公开号命名的,所以对照要下载的和已下载的公开号就能看出哪些专利没有下载成功。
我这里写了一个python小脚本。
import pandas as pd
import os
#读取待下载专利的公开号,地址修改成你自己存放的位置
df = pd.read_excel("target.xlsx",header= 0, usecols= "B").drop_duplicates()
#取前11位作为对比(以中国专利作为参考)
PublicNumber_tgt = list(map(lambda x: x[0:11],df["公开(公告)号"].to_list()))
#读取已下载专利的公开号,地址修改成你自己存放的位置
filelist=os.listdir(r'C:\Users\mornthx\Desktop\专利全文')
#取前11位作为对比
PublicNumber_dl = list(map(lambda x: x[0:11],filelist))
#比较两者差值
diff = set(PublicNumber_tgt).difference(set(PublicNumber_dl))
print(diff)
没下载的专利具体问题具体解决就好了。
希望能帮到大家!