google patent爬取专利数据

news/2024/11/14 15:27:44/

网址:
g​​​​​​​whttps://patents.google.com/

通过F12找到请求头

https://patents.google.com/xhr/query?url=q=(google)&oq=google&exp=&tags=

# -*- coding: utf-8 -*-
import scrapy
import io
import sys
import requests
import xlrd
from xlwt import *
from openpyxl import Workbook as wb
import os
import re
import csv
import time
import random
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')def read_company():fileName0 = 'sample.xlsx'bk=xlrd.open_workbook(fileName0)shxrange=range(bk.nsheets)try:sh=bk.sheet_by_name("Sheet1")except:print ("代码出错")# ncols=sh.ncols #获取列数# nrows=sh.nrows #获取列数book = Workbook(encoding='utf-8')# sheet = book.add_sheet('Sheet1') #创建一个sheetUPC = []tmp1 = sh.col_values(0)[1:]  #companytmp2 = sh.col_values(1)[1:]  #tic# tmp3 = sh.col_values(2)[1:]  #IRIreturn tmp1def start_requests():base_url = 'https://patents.google.com/xhr/query?'company = 'CANCERVAX CORP'patent_name = 'url=assignee=' + company + '&oq=' + company + '&exp=&download=true'param = {}suburl = base_url + patent_nameprint(suburl)file_name = 'test.csv'r = requests.get(suburl)fo = open(file_name,'wb')                         # 注意要用'wb',b表示二进制,不要用'w'fo.write(r.content)                               # r.content -> requests中的二进制响应内容:以字节的方式访问请求响应体,对于非文本请求fo.close()# start_requests()
read_company()
proxies = {"https": "https://127.0.0.1:1080", "http": "http://127.0.0.1:1080"}
base_url = 'https://patents.google.com/xhr/query?'
url_list = []
company_list = read_company()
headers = {'user_agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
'authority':'patents.google.com',
'method':'GET',
'scheme':'https',
'accept':'*/*',
'accept-encoding':'gzip, deflate, br',
'accept-language':'en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7',
'cookie':'_ga=GA1.3.650546010.1557842690; 1P_JAR=2019-06-13-03; NID=185=HFLQWsc9gyTy7jWJiX-sZ242_kqMdEVUKf89m0r0R8jrCT1n2jN8cuSFmh6abb50bDB8u6qYhcF7KXWHgZy4TPj-zkheFl9g6kiLCqFrNEf6G_2hLhWzCfjwkz7EjLB8jrROilpayn5NIIKf0WLZsZCBemnNt88RdO4Tik_zYwg; _gid=GA1.3.814134454.1560407883; _gat=1'
}
user_agent_pool = ["Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 ",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110218 AlexaToolbar/alxf-2.0 Firefox/3.6.14",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"]
ip_pool = ['114.230.69.170:9999','61.135.155.82:443']
print(company_list)
for company in company_list:# print(company)patent_name = 'url=assignee=' + company + '&oq=' + company + '&exp=&download=true'url = base_url + patent_namefilename = './company_patent/' + company + '.csv'# print(url)ip = ip_pool[random.randrange(0,2)]headers['user_agent'] = user_agent_pool[random.randrange(0,len(user_agent_pool))]proxy_ip = 'http://'+ipproxies = {'http':proxy_ip}r = requests.get(url,headers=headers,proxies=proxies)fo = open(filename,'wb')                         # 注意要用'wb',b表示二进制,不要用'w'fo.write(r.content)                               # r.content -> requests中的二进制响应内容:以字节的方式访问请求响应体,对于非文本请求# filename1 = './company_patent/' + company + '.csv'# with open(filename1) as f:#     csv_reader =csv.reader(f)# for line in csv_reader:#     print(line)fo.close() time.sleep(15)
  • 导入需要的库,如Scrapy、requests、xlrd等;
  • 通过read_company()函数读取excel表格中的公司名称;
  • 通过start_requests()函数发送GET请求获取特定公司的专利信息,并将响应内容写入csv文件中;
  • 最后循环遍历所有公司,调用requests库发送GET请求获取专利信息,再将响应内容写入csv文件中。

反爬措施:

(1)随机ip池
(2)随机user-agent池
(3)增加每次爬取的延时

 

 


http://www.ppmy.cn/news/976678.html

相关文章

【工具类】如何查找PCT专利的授权情况

如何查找PCT专利的授权情况 一、需要用到的网址二、常识补充2.1 PCT2.2 WO 三、技巧 一、需要用到的网址 这里我推荐几个比较常用和实用的 WIPO全球专利检索系统(Global Patent Search Network,GPSN):https://patentscope.wipo.…

stm32通过ESP8266接入原子云

1. ESP8266模块需要烧录原子云固件,此原子云固件和正常的ESP8266固件相比添加了ATATKCLDSTA 和 ATATKCLDCLS 这两条指令: 2. 原子云账号注册及设备建立 设备管理-新增设备-ESP8266 新建设备后新建分组,将设备加入到此分组中: 至此…

微信内测朋友圈可以置顶了!

今天一大早 #微信内测朋友圈可以置顶了# 冲上热搜第一 微信朋友圈是微信用户分享生活点滴、展示自我风采的重要平台,也是用户与好友互动、交流感情的重要渠道。 然而,由于朋友圈的时间线机制,用户发布的内容往往会随着时间推移而淹没在海量…

LLM-2023:Auto-GPT

从本质上来看,Auto-GPT 是一种自动文本生成技术,它使用深度学习算法来生成类似人类的文本。它基于生成式预训练转换器 ( GPT ) 架构,是一种旨在生成自然语言文本的神经网络。 来源:https://github.com/Significant-Gravitas/Auto-GPT 据开发者介绍,Auto-GPT 是由 GPT-4 …

安装android SDK,指定sdk版本

参考官网文档:sdkmanager | Android 开发者 | Android Developers (google.cn) 下载Tools安装包 官网下载地址:Download Android Studio & App Tools - Android Developers (google.cn) wget https://dl.google.com/android/repository/commandli…

centos7.9误删python2恢复yum

同事手快误删python2,造成python2和yum不能使用。 cat /etc/redhat-release查看下如果刚好是centos7.9.2009可以通过以下操作恢复。 1、把python、yum卸载干净 # 删除已安装程序和它的关联项 rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps rpm -qa|g…

小程序自定义导航栏

效果图 代码 app.json文件下 "window":{"navigationStyle": "custom" //增加此属性},app.js文件 //计算高度 App({onLaunch() {wx.getSystemInfo({ // 获取设备信息success: (res) > {this.globalData.systeminfo res//导航栏let statusB…

pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统快速安装指南

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…