当前位置: 首页 > news >正文

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

免责声明

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

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 Recorderco = 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').textpublication_num = item.ele('.info').eles('tag:dd')[0].textpublication_date = item.ele('.info').eles('tag:dd')[1].textapplication_num = item.ele('.info').eles('tag:dd')[2].textapplication_date = item.ele('.info').eles('tag:dd')[3].textapplicant = item.ele('.info').eles('tag:dd')[4].textinventor = item.ele('.info').eles('tag:dd')[5].textaddress = item.eles('.intro')[0].eles('tag:dd')[0].texttype_num = item.eles('.intro')[1].eles('tag:dd')[0].textdes = item.eles('.intro')[2].eles('tag:dd')[0].textif item.eles('.intro')[2].eles('tag:dd')[0].ele('tag:p'):des_dom = item.eles('.intro')[2].eles('tag:dd')[0].ele('tag:p').htmlsoup = 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 = iprint(f'正在获取第{i}页数据')get_page_data()page.quit()

http://www.xdnf.cn/news/669421.html

相关文章:

  • YOLOv2 深度解析:目标检测领域的进阶之路
  • 【文献阅读】EndoChat: Grounded Multimodal Large Language Model for Endoscopic Surgery
  • 【HW系列】—目录扫描、口令爆破、远程RCE流量特征
  • 攻防世界-ics-07
  • 【Web应用】基础篇04-功能详解-权限控制(创建菜单--分配角色--创建用户)
  • 使用 scikit-learn 库对乌克兰冲突事件数据集进行多维度分类分析
  • ABP VNext + Apache Flink 实时流计算:打造高可用“交易风控”系统
  • 【深度学习】9. CNN性能提升-轻量化模型专辑:SqueezeNet / MobileNet / ShuffleNet / EfficientNet
  • 汽车电子/电气(E/E)架构将朝着区域(分区)式架构方向发展
  • Filebeat es 同步服务器日志到es
  • C++ STL 容器:List 深度解析与实践指南
  • Linux编辑器——vim的使用
  • 文件上传白名单绕过(图片马 - 图片二次渲染绕过)
  • React从基础入门到高级实战:React 核心技术 - React 与 TypeScript:构建类型安全的应用
  • 第十章:构建之巅 · 打包与部署的终极试炼
  • uniapp-商城-72-shop(5-商品列表,步进器添加商品到的购物车实现)
  • Unsupervised Learning-Word Embedding
  • 如何提高CAD作图设计效率,技术分享
  • 每日算法 -【Swift 算法】实现回文数判断!
  • stm32f系列工程切换到H系列
  • 电芯单节精密焊接机:以先进功能与特点赋能电池制造科技升级
  • 传统数据表设计与Prompt驱动设计的范式对比:以NBA投篮数据表为例
  • PHPStudy 一键式网站搭建工具的下载使用
  • EfficientLLM: Efficiency in Large Language Models 高效大模型
  • AppArmor(Application Armor)是 Linux 内核的一个安全模块
  • 比亚迪“双剑”电池获中汽中心权威认证,堪称“移动安全堡垒”。
  • HTTPS 协议:数据传输安全的坚实堡垒
  • 视频监控汇聚平台EasyCVR工业与安全监控:防爆摄像机的安全应用与注意事项
  • 大模型(5)——编码器(Encoder)、解码器(Decoder)
  • 分布式爬虫监控架构设计