Python爬虫 | 2008-2018年各省专利统计数据
Python爬虫 | 2008-2018年各省专利统计数据
- 目的及数据来源
- 查询2008-2018年的专利统计年报
- 获取2008-2018年专利统计年报的子页面的url地址
- 获取2008-2018年专利统计年报的子页面的子页面的url地址
- 结果示例
- 总结
目的及数据来源
目的:获取2008-2018年各省专利申请状况、专利申请授权状况、专利有效状况、专利行政执法状况相关数据。
数据来源:知识产权局 https://www.cnipa.gov.cn/
查询2008-2018年的专利统计年报
以2018年为例,进入官方网站,选择 数据 — 统计报告查询 — 统计年报 — 选择2018年 — 点击查询 — 进入2018年专利统计年报汇编 — 前三项和最后一项就是我们要找的数据。
- 2018年专利统计年报汇编:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/indexy.html
- 2017年专利统计年报汇编:https://www.cnipa.gov.cn/tjxx/jianbao/year2017/indexy.html
通过上述两个网址可以发现,2008-2018年的专利统计年报汇编url仅year后面的年份不同,其余均相同。因此,后续可通过for循环获取2008-2018年所有的目标网址。
获取2008-2018年专利统计年报的子页面的url地址
以2018年为例,获取2018年专利统计年报的子页面(专利申请状况、专利申请授权状况、专利有效状况、专利行政执法状况)的url地址:
- 专利申请状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/a.html
- 专利申请授权状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/b.html
- 专利有效状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/c.html
- 专利行政执法状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/h.html
通过上述子页面的url地址,可以发现这些地址都有相同的url开端:
https://www.cnipa.gov.cn/tjxx/jianbao/year2018/
也有相同的url结尾:
.html
只有代表不同子页面的部分不一致,分别为:
专利申请状况(a)、专利申请授权状况(b)、专利有效状况(c)和专利行政执法状况(h)
定义get_target_url函数,year为参数,获取该年份下所有的目标网址;再通过for循环获取2008至2018年所有的目标网址。
import requests
import pandas as pd
import os# 获取各个页面的url(由于各个页面的url类似,可以考虑直接构建)
def get_target_url(year):url = 'https://www.cnipa.gov.cn/tjxx/jianbao/year' + yearurl_a = url + '/a.html' #专利申请状况url_b = url + '/b.html' #专利申请授权状况url_c = url + '/c.html' #专利有效状况url_h = url + '/h.html' #专利行政执法状况target_url = [url_a, url_b, url_c, url_h]return target_urltarget_url = []
for year in range(2008, 2020):year = str(year)target_url = target_url + get_target_url(year)
获取2008-2018年专利统计年报的子页面的子页面的url地址
同样以2018年为例,获取专利申请状况、专利申请授权状况、专利有效状况、专利行政执法状况页面的所有子页面url地址:
- 1.专利申请状况(a)
-
(1) 链接1:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/a/a1.html
(2) 链接2:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/a/a2.html
(3) ……
(4) 链接18:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/a/a18.html - 2.专利申请授权状况(b)
-
(1) 链接1:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/b/b1.html
(2) 链接2:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/b/b2.html
(3) ……
(4) 链接14:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/b/b14.html - 3.专利有效状况(c)
-
(1) 链接1:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/c/c1.html
(2) 链接2:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/c/c2.html
(3) ……
(4) 链接9:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/c/c9.html - 4.专利行政执法状况(h)
-
(1) 链接1:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/h/h1.html
(2) 链接2:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/h/h2.html
(3) ……
(4) 链接6:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/h/h6.html
通过上述子页面的url地址,可以发现这些地址也有一定的规律,后续只需要根据这些规律创建目标url即可。
定义save_to_excel函数,设置year和urls两个参数,根据目标网址爬取数据并存储到excel表格中,设置表格excel数据的保存地址为同目录文件夹;
定义get_table_url函数,设置year为参数,获取所有子页面的后部分url地址(如a/a1.html),结合save_to_excel函数将网页内容抓取保存为excel文件;再通过for循环结合get_table_url函数爬取网页内容。
代码中,try…except…部分是在自动化爬取过程中出现了bug,这个bug是由于2014/h/h2页面下的表格格式与其它表格不同所造成的,因此单独列出。
def save_to_excel(year, urls):times = 1for url in urls:header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36","Cookie":"_trs_uv=kvxfw9lk_4693_1j0x; _va_ses=*; _va_id=1c99e31ff243ff58.1636785618.2.1636795627.1636785618."}req = requests.get(url, headers=header).texttry:html_data = pd.read_html(req)[3]except:df = pd.read_html(req, header=0)[3]df_0 = pd.DataFrame([df.columns])df.columns = df_0.columnshtml_data = df_0.append(df, ignore_index=True)if times < 10:html_data.to_excel(r'D:\\YXH\\PythonLearning\\Python数据分析\\实验一\\国家知识产权局(2008及以后)专利统计数据\\'+ year + '\\' + url[-7:-5] + '.xlsx')times = times + 1else:html_data.to_excel(r'D:\\YXH\\PythonLearning\\Python数据分析\\实验一\\国家知识产权局(2008及以后)专利统计数据\\'+ year + '\\' + url[-8:-5] + '.xlsx')times = times + 1def get_table_url(year):base_url = 'https://www.cnipa.gov.cn/tjxx/jianbao/year' + yearurls_a = [base_url + '/a/a{}'.format(i) + '.html'for i in range(1, 19)] #专利申请状况save_to_excel(year, urls_a)urls_b = [base_url + '/b/b{}'.format(i) + '.html'for i in range(1, 15)] #专利申请授权状况save_to_excel(year, urls_b)urls_c = [base_url + '/c/c{}'.format(i) + '.html'for i in range(1, 10)] #专利有效状况save_to_excel(year, urls_c)urls_h = [base_url + '/h/h{}'.format(i) + '.html'for i in range(1, 7)] #专利行政执法状况save_to_excel(year, urls_h)for year in range(2008, 2019):year = str(year)path = 'D:\\YXH\\PythonLearning\\Python数据分析\\实验一\\国家知识产权局(2008及以后)专利统计数据\\' + yearisExists = os.path.exists(path)if not isExists:os.mkdir(path)get_table_url(year)
结果示例
- 2008-2018年专利统计年报
- 2008年专利统计年报
- 2008年a1文件
总结
本文调用了request、os实现爬取2008-2018年各省专利统计数据并存储到excel文件中,主要使用了pandas的read_html函数进行网页表格的解析。
Python爬虫 | 2008-2018年各省专利统计数据相关推荐
- CnOpenData中国高校专利统计数据
一.数据简介 在教育部.国家知识产权局.科技部等部门的政策措施促进下,我国高校科技成果转化机制更加完善.科研人员转化积极性不断增强.转化效益逐年提升. 作为衡量高校科技创新成效的重要指标,专利 ...
- 从2018年以太坊统计数据看区块链发展趋势
今年6月,我们发布了"以太坊网络状态",重点介绍了整个网络的一些关键数据和统计数据.六个月后,即将在2018年结束时,我们处于长期"加密货币冬天"的尾声,201 ...
- 数据改版 | CnOpenData中国高新技术企业专利统计数据
CnOpenData中国高新技术企业专利统计数据 一.数据简介 16年1月,我国科技部.财政部.国家税务总局印发修订了2008年首次发布的<高新技术企业认定管理办法>,明确规定了高新技 ...
- 中国高新技术企业专利统计数据
一.数据简介 2016年1月,我国科技部.财政部.国家税务总局印发修订了2008年首次发布的<高新技术企业认定管理办法>,明确规定了高新技术企业的标准,即在<国家重点支持的高新技术领 ...
- python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...
python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07
- Python 爬虫实战,模拟登陆爬取数据
Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...
- Python爬虫网易云歌词及词频统计--(周杰伦top50)
本篇博客是利用Python爬虫网易云音乐,并利用jieba分词,对歌词进行分词,然后分析周杰伦top50中最常出现的词语. 我们先尝试获取一首歌的歌词吧,比如等你下课这首歌 上面的id就是等你下课这首 ...
- 【Python爬虫】爬取企业专利信息
本来是个美好的周末的,但是周五晚上领导给了一个公司名称的Excel,让把这些公司的专利信息爬取下来.本文记录了爬取企业专利信息的心酸过程.码字不易,喜欢请点赞!!! 一.找寻目标网页 在接到这个任务之 ...
- 编写python爬虫 获取中华英才网全网工资数据
做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...
- Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)
Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...
最新文章
- 计算机浙大网java网站,网络课程—非计算机专业JAVA程序设计语言
- 记录一次java项目上线部署
- 2022年十大AI预测
- Spark 1.6.2 + Beam 2.0.0读取Mongodb数据进行相应逻辑处理
- matplotlib 制作不等间距直方图
- Ajax学习系列——向服务器发送请求
- python字符串常见操作
- 设置xy轴名称_最强干货来了:Grasshopper运算器名称总结(上篇)
- Springmvc返回中文字符乱码问题
- Linux线程-概念和控制
- MIT | 数据分析、信号处理和机器学习中的矩阵方法 笔记系列: Lecture 8 Norms of Vectors and Matrices
- DIY 2U 服务器
- 关于VB提示ByRef参数类型不符的分析
- OpenCV-Python (官方)中文教程(部分三)
- java中集合的分类以及集合的选择
- 互联网日报 | 5月14日 星期五 | “辣条一哥”卫龙将赴港上市;B站付费用户破2000万;京东物流预计5月28日在港上市...
- 百业升级 共启新程——CDEC2021中国数字智能生态大会武汉站今日举行
- PO、BO、VO、POJO、DTO、DAO分别代表什么意思
- 使用全局变量有什么好处?有什么坏处?_徒手深蹲的好处和坏处是什么,空中健身告诉你...
- windows11 安装Kibana
热门文章
- 《多媒体在初中数学中的运用研究》课题研究方案
- 主页被锁定为 hao.360.cn
- Effective C++中文版
- stony大学计算机科学找工作,如果我本科四年在加州大学洛杉矶分校安德森商学院就读,毕业后我实在当地找工作好还是回国比较好?哪个待...
- Android 隐藏程序的图标
- Python办公自动化实战 01 | Python优势与自动化思维让你的工作化繁为简
- 谢霆锋张柏芝被曝婚变 范范微博擦泪为好友祷告
- 【笔记】python中使用if语句处理列表:检查特殊元素、确定列表不是空的、使用多个列表
- 网页微博连接不上服务器,新浪微博网络出错加载不了怎么办
- 计算机科学导论第一章练习解答