爬虫入门指南-某专利网站的专利数据查询并存储

news2025/6/3 6:32:10

免责声明

本教程仅用于教育目的,演示如何合法获取公开专利数据。在实际操作前,请务必:

1.  仔细阅读目标网站的robots.txt文件和服务条款
2.  控制请求频率,避免对服务器造成负担
3.  仅获取和使用公开数据
4.  不用于商业用途或大规模抓取

本次教学网站:aHR0cDovL2VwdWIuY25pcGEuZ292LmNuL0FkdmFuY2Vk(请自行base64解密)。

本次实现需求:1.查询某固定日期之后的所有专利 2.将获取到的专利数据写入xlsx文件

本次使用语言:python

实现思路:DrissionPage实现自动化操作网页,向公布开始日期的输入框插入需要查询的日期(若需要其他查询条件思路与其基本一致),点击查询按钮跳转至专利数据列表页面,获取总计页面数量,循环总计页面数量,自动获取并向xlsx文件写入每一页数据,如果当前页不是最后一页,点击下一页继续获取数据并完成写入。

程序输出结果:

完整代码

from DrissionPage import ChromiumOptions, ChromiumPage
import re
from bs4 import BeautifulSoup
from DataRecorder import Recorder

co = ChromiumOptions()
co.headless()  # 无头模式
# 创建页面对象,并启动浏览器
page = ChromiumPage(co)
# 跳转到页面
page.get('http://epub.cnipa.gov.cn/Advanced')
start_date = '2022.10.18'
r = Recorder(f'专利网_{start_date}.xlsx')
r.set.head(['标题', '申请公布号', '申请公布日', '申请号', '申请日', '申请人', '发明人', '地址', '分类号', '摘要'])
r.record()


def save_data(datalist):
    r.add_data(datalist)
    r.record()


# 定位到开始日期文本框,获取文本框元素
ele = page.ele('#pd_begin')
# 输入对文本框输入开始日期
ele.input(start_date)
# 定位到页面文本为“查询”的按钮并点击
search_button = page.ele('.icon-sea')
search_button.click()
page.wait(5)

total_element = page.ele('css:.page_total')
total_content = total_element.text
# 正则提取页数
page_num = re.search(r'共 (\d+) 页', total_content).group(1)
print(f'总页数:{page_num}')  # 输出:总页数:****

now_page = 1
max_page = int(page_num)
data_list = []


def get_data():
    res = page.ele('#result')
    items = res.eles('css:.item')
    list_arr = []
    for item in items:
        title = item.ele('.title').text
        publication_num = item.ele('.info').eles('tag:dd')[0].text
        publication_date = item.ele('.info').eles('tag:dd')[1].text
        application_num = item.ele('.info').eles('tag:dd')[2].text
        application_date = item.ele('.info').eles('tag:dd')[3].text
        applicant = item.ele('.info').eles('tag:dd')[4].text
        inventor = item.ele('.info').eles('tag:dd')[5].text
        address = item.eles('.intro')[0].eles('tag:dd')[0].text
        type_num = item.eles('.intro')[1].eles('tag:dd')[0].text
        des = item.eles('.intro')[2].eles('tag:dd')[0].text
        if item.eles('.intro')[2].eles('tag:dd')[0].ele('tag:p'):
            des_dom = item.eles('.intro')[2].eles('tag:dd')[0].ele('tag:p').html
            soup = BeautifulSoup(des_dom, 'html.parser')
            for tag in soup.find_all(class_=['point', 'open j-open-alltxt']):
                tag.decompose()
            des = soup.get_text(strip=True).replace('\n', ' ')
        arr = [title, publication_num, publication_date, application_num, application_date, applicant, inventor,
               address, type_num, des]
        print(arr)
        list_arr.append(arr)
    save_data(list_arr)


def get_page_data():
    if now_page == 1:
        get_data()
    else:
        next_button = page.ele('.next_page')
        page.wait(2)
        next_button.click()
        page.wait(3)
        get_data()


for i in range(1, max_page + 1):
    now_page = i
    print(f'正在获取第{i}页数据')
    get_page_data()

page.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2395148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL(Database Modifications)

目录 Insertion Specifying Attributes in INSERT Adding Default Values(缺省值) Inserting Many Tuples Creating a Table Using the SELECT INTO Statement Deletion Example: Deletion Semantics of Deletion Updates Example: Update Sev…

【android bluetooth 案例分析 04】【Carplay 详解 2】【Carplay 连接之手机主动连车机】

1. 背景 在【android bluetooth 案例分析 04】【Carplay 详解 1】【CarPlay 在车机侧的蓝牙通信原理与角色划分详解】中我们从整理上介绍了车机中 carplay 相关基础概念。 本节 将详细分析 iphone手机主动 连接 车机carplay 这一过程。 先回顾一下 上一节, carpla…

【仿muduo库实现并发服务器】实现时间轮定时器

实现时间轮定时器 1.时间轮定时器原理2.项目中实现目的3.实现功能3.1构造定时任务类3.2构造时间轮定时器每秒钟往后移动添加定时任务刷新定时任务取消定时任务 4.完整代码 1.时间轮定时器原理 时间轮定时器的原理类似于时钟,比如现在12点,定一个3点的闹…

day15 leetcode-hot100-28(链表7)

2. 两数相加 - 力扣(LeetCode) 1.模拟 思路 最核心的一点就是将两个链表模拟为等长,不足的假设为0; (1)设置一个新链表newl来代表相加结果。 (2)链表1与链表2相加,具…

​​知识图谱:重构认知的智能革命​

在数字经济的浪潮中,知识图谱正悄然掀起一场认知革命。它不仅是技术的迭代,更是人类从“数据依赖”迈向“知识驱动”的里程碑。当谷歌用知识图谱优化搜索引擎、银行用它穿透复杂的金融欺诈网络、医院用它辅助癌症诊疗时,这项技术已悄然渗透到…

【计算机网络】4网络层①

这篇笔记讲IPv4和IPv6。 为了解决“IP地址耗尽”问题,有三种措施: ①CIDR(延长IPv4使用寿命) ②NAT(延长IPv4使用寿命) ③IPv6(从根本上解决IP地址耗尽问题) IPv6 在考研中考查频率较低,但需掌握基础概念以防冷门考点,重点结合数据报格式和与 IPv4 的对比记忆。…

MATLAB中的table数据类型:高效数据管理的利器

MATLAB中的table数据类型:高效数据管理的利器 什么是table数据类型? MATLAB中的table是一种用于存储列向数据的数据类型,它将不同类型的数据组织在一个表格结构中,类似于电子表格或数据库表。自R2013b版本引入以来,t…

Dropout 在大语言模型中的应用:以 GPT 和 BERT 为例

引言 大型语言模型(LLMs)如 GPT(生成式预训练 Transformer)和 BERT(双向编码器表示 Transformer)通过其强大的语言理解和生成能力,彻底改变了自然语言处理(NLP)领域。然…

gitLab 切换中文模式

点击【头像】--选择settings 选择【language】,选择中文,点击【保存】即可。

133.在 Vue3 中使用 OpenLayers 实现画多边形、任意编辑、遮罩与剪切处理功能

🎬 效果演示截图(先睹为快) ✨ 功能概览: ✅ 鼠标画任意形状多边形; ✏️ 点击“修改边界”可拖动顶点; 🟥 点击“遮罩”后地图除多边形区域外变红; ✂️ 点击“剪切”后仅显示选…

4.8.4 利用Spark SQL实现分组排行榜

在本次实战中,我们的目标是利用Spark SQL实现分组排行榜,特别是计算每个学生分数最高的前3个成绩。任务的原始数据由一组学生成绩组成,每个学生可能有多个成绩记录。我们首先将这些数据读入Spark DataFrame,然后按学生姓名分组&am…

【五子棋在线对战】一.前置知识的了解

前置知识的了解 前言1.Websocketpp1.1 使用Websocketpp的原因1.2 Websocket常用接口1.3 Websocket搭建服务器流程 2.JsonCpp2.1 Json 数据对象类的表示2.2序列化和反序列化的接口2.3 演示代码 3.Mysql![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/93305f423b544fc1…

历年中国科学技术大学计算机保研上机真题

2025中国科学技术大学计算机保研上机真题 2024中国科学技术大学计算机保研上机真题 2023中国科学技术大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school?classification1 拆分数字 题目描述 给定一个数字,拆分成若干个数字之和&#xff…

HackMyVM-Art

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-31 03:00 EDT Nmap scan report for 192.168.43.1 Host is up (0.0047s latency). MAC Address: C6:45:66:05:91:88 (Unknown) Nmap scan rep…

网页前端开发(基础进阶1)

颜色表示方法3种: 1.关键字: color:green; gray red yellow 2.rgb表示法:红,绿,蓝三原色。rgb(r,g,b),r表示红色,g表示绿…

如何找到一条适合自己企业的发展之路?

一个创业型的企业,开始就需要面向市场,通过自己的服务或产品,帮助用户解决问题,为客户创造价值,通过为客户创造的价值,出创造一定的的现金流,让企业存活下来! 企业的运营过程中&…

Vue-数据监听

数据监听 基础信息 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>数据监听</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js&qu…

当前用户的Git全局配置情况:git config --global --list

通过config命令可以查询当前用户的全局配置情况。这些配置项定义了 Git 在全局范围内的行为&#xff0c;包括如何处理大文件、SSL 证书验证以及提交时的用户信息。 git config --global --list http.sslVerifyfalse 这个配置项禁用了 SSL 证书验证。这在与自签名证书的 Git 服…

AI生态警报:MCP协议风险与应对指南(中)——MCP Server运行时安全​​

作为连接AI模型与外部工具的“USB-C接口”&#xff0c;MCP协议成为AI生态的核心枢纽&#xff0c;其安全风险已从理论威胁转化为实际攻击目标。 AI生态警报&#xff1a;MCP协议风险与应对指南&#xff08;上&#xff09;——架构与供应链风险https://blog.csdn.net/WangsuSecur…

day15 leetcode-hot100-29(链表8)

19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 1.暴力法 思路 &#xff08;1&#xff09;先获取链表的长度L &#xff08;2&#xff09;然后再次遍历链表到L-n的位置&#xff0c;直接让该指针的节点指向下下一个即可。 2.哈希表 思路 &#xff0…