Python爬虫 | 2008-2018年各省专利统计数据

  • 目的及数据来源
  • 查询2008-2018年的专利统计年报
  • 获取2008-2018年专利统计年报的子页面的url地址
  • 获取2008-2018年专利统计年报的子页面的子页面的url地址
  • 结果示例
  • 总结

目的及数据来源

  1. 目的:获取2008-2018年各省专利申请状况、专利申请授权状况、专利有效状况、专利行政执法状况相关数据。

  2. 数据来源:知识产权局 https://www.cnipa.gov.cn/

查询2008-2018年的专利统计年报

以2018年为例,进入官方网站,选择 数据 — 统计报告查询 — 统计年报 — 选择2018年 — 点击查询 — 进入2018年专利统计年报汇编 — 前三项和最后一项就是我们要找的数据。

  1. 2018年专利统计年报汇编:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/indexy.html
  2. 2017年专利统计年报汇编:https://www.cnipa.gov.cn/tjxx/jianbao/year2017/indexy.html

通过上述两个网址可以发现,2008-2018年的专利统计年报汇编url仅year后面的年份不同,其余均相同。因此,后续可通过for循环获取2008-2018年所有的目标网址。

获取2008-2018年专利统计年报的子页面的url地址

以2018年为例,获取2018年专利统计年报的子页面(专利申请状况、专利申请授权状况、专利有效状况、专利行政执法状况)的url地址:

  1. 专利申请状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/a.html
  2. 专利申请授权状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/b.html
  3. 专利有效状况:https://www.cnipa.gov.cn/tjxx/jianbao/year2018/c.html
  4. 专利行政执法状况: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)

结果示例

  1. 2008-2018年专利统计年报
  2. 2008年专利统计年报
  3. 2008年a1文件

总结

本文调用了request、os实现爬取2008-2018年各省专利统计数据并存储到excel文件中,主要使用了pandas的read_html函数进行网页表格的解析。

Python爬虫 | 2008-2018年各省专利统计数据相关推荐

  1. CnOpenData中国高校专利统计数据

    一.数据简介   在教育部.国家知识产权局.科技部等部门的政策措施促进下,我国高校科技成果转化机制更加完善.科研人员转化积极性不断增强.转化效益逐年提升.   作为衡量高校科技创新成效的重要指标,专利 ...

  2. 从2018年以太坊统计数据看区块链发展趋势

    今年6月,我们发布了"以太坊网络状态",重点介绍了整个网络的一些关键数据和统计数据.六个月后,即将在2018年结束时,我们处于长期"加密货币冬天"的尾声,201 ...

  3. 数据改版 | CnOpenData中国高新技术企业专利统计数据

    CnOpenData中国高新技术企业专利统计数据 一.数据简介   16年1月,我国科技部.财政部.国家税务总局印发修订了2008年首次发布的<高新技术企业认定管理办法>,明确规定了高新技 ...

  4. 中国高新技术企业专利统计数据

    一.数据简介 2016年1月,我国科技部.财政部.国家税务总局印发修订了2008年首次发布的<高新技术企业认定管理办法>,明确规定了高新技术企业的标准,即在<国家重点支持的高新技术领 ...

  5. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  6. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  7. Python爬虫网易云歌词及词频统计--(周杰伦top50)

    本篇博客是利用Python爬虫网易云音乐,并利用jieba分词,对歌词进行分词,然后分析周杰伦top50中最常出现的词语. 我们先尝试获取一首歌的歌词吧,比如等你下课这首歌 上面的id就是等你下课这首 ...

  8. 【Python爬虫】爬取企业专利信息

    本来是个美好的周末的,但是周五晚上领导给了一个公司名称的Excel,让把这些公司的专利信息爬取下来.本文记录了爬取企业专利信息的心酸过程.码字不易,喜欢请点赞!!! 一.找寻目标网页 在接到这个任务之 ...

  9. 编写python爬虫 获取中华英才网全网工资数据

    做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...

  10. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

最新文章

  1. 计算机浙大网java网站,网络课程—非计算机专业JAVA程序设计语言
  2. 记录一次java项目上线部署
  3. 2022年十大AI预测
  4. Spark 1.6.2 + Beam 2.0.0读取Mongodb数据进行相应逻辑处理
  5. matplotlib 制作不等间距直方图
  6. Ajax学习系列——向服务器发送请求
  7. python字符串常见操作
  8. 设置xy轴名称_最强干货来了:Grasshopper运算器名称总结(上篇)
  9. Springmvc返回中文字符乱码问题
  10. Linux线程-概念和控制
  11. MIT | 数据分析、信号处理和机器学习中的矩阵方法 笔记系列: Lecture 8 Norms of Vectors and Matrices
  12. DIY 2U 服务器
  13. 关于VB提示ByRef参数类型不符的分析
  14. OpenCV-Python (官方)中文教程(部分三)
  15. java中集合的分类以及集合的选择
  16. 互联网日报 | 5月14日 星期五 | “辣条一哥”卫龙将赴港上市;B站付费用户破2000万;京东物流预计5月28日在港上市...
  17. 百业升级 共启新程——CDEC2021中国数字智能生态大会武汉站今日举行
  18. PO、BO、VO、POJO、DTO、DAO分别代表什么意思
  19. 使用全局变量有什么好处?有什么坏处?_徒手深蹲的好处和坏处是什么,空中健身告诉你...
  20. windows11 安装Kibana

热门文章

  1. 《多媒体在初中数学中的运用研究》课题研究方案
  2. 主页被锁定为 hao.360.cn
  3. Effective C++中文版
  4. stony大学计算机科学找工作,如果我本科四年在加州大学洛杉矶分校安德森商学院就读,毕业后我实在当地找工作好还是回国比较好?哪个待...
  5. Android 隐藏程序的图标
  6. Python办公自动化实战 01 | Python优势与自动化思维让你的工作化繁为简
  7. 谢霆锋张柏芝被曝婚变 范范微博擦泪为好友祷告
  8. 【笔记】python中使用if语句处理列表:检查特殊元素、确定列表不是空的、使用多个列表
  9. 网页微博连接不上服务器,新浪微博网络出错加载不了怎么办
  10. 计算机科学导论第一章练习解答