Python爬虫 | 佰腾网2008-2018年各省不同类型专利数据
Python爬虫 | 佰腾网2008-2018年各省不同类型专利数据
- 目的及数据来源
- 模拟登录
- 模仿filter请求并进行数据解析
- 结果示例
- 总结
目的及数据来源
- 目的:获取2008-2018年各省外观专利、发明专利、实用新型专利、发明授权专利、发明公开专利的数量。
- 数据来源:佰腾网 https://www.baiten.cn/gjs.html
模拟登录
打开佰腾网,注册及登录之后就可以进行检索。
以公开(公告)日为2018年,申请人地址在广东为例,在检索框中的公开(公告)日输入2018,申请人地址输入广东,进行检索,得到2018年广东省不同类型专利数量;

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep# 创建列表存储所有省份,不包括港澳台
provinces = ['上海', '云南', '内蒙古', '北京', '吉林', '四川', '天津', '宁夏', '安徽', '山东', '山西', '广东','广西', '新疆', '江苏', '江西', '河北', '河南', '浙江', '海南', '湖北', '湖南', '甘肃', '福建','西藏', '贵州', '辽宁', '重庆', '陕西', '青海', '黑龙江'
]# 年份为2008-2018年
years = range(2008, 2019)options = webdriver.ChromeOptions() #自定义加载项,如限制图片加载,不打开浏览器窗口等操作
browser = webdriver.Chrome(service=s, options=options)
url = 'https://www.baiten.cn/gjs.html'
pwd = browser.get(url)
pwd_1 = browser.find_element_by_class_name('person-head').click() #通过name属性定位输入框
pwd_2 = browser.find_element_by_name('login_mobile')
pwd_2.click()
pwd_2.send_keys('1599***0488') #手机号
pwd_3 = browser.find_element_by_name('login_pwd')
pwd_3.click()
pwd_3.send_keys('**********') #密码
pwd_3.send_keys(Keys.ENTER)
模仿filter请求并进行数据解析
打开开发者工具(F12),点击Network选项并且选择XHR,找到名为filter的请求(需要的数据就存在其返回的Json中),模仿filter请求,获得佰腾网2008-2018年各省不同类型专利数量。
根据开发者工具中filter请求,组装请求头:

import requests
import pandas as pd
import os
import reheader = {'Accept':'*/*','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.9','Connection':'keep-alive','Content-Length':'90','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','Cookie':'JSESSIONID=5685C9F9BB40B88004576169DCD75662; Hm_lvt_7fc44f078bf7b5e19489428c362109a3=1640334004; UM_distinctid=17deb868eaa13-016d269bbd79eb-4303066-144000-17deb868eab52; CNZZDATA1275904268=682609430-1640324966-%7C1640324966; BSESSION=7fa1f194c406c5183527785238ae66a4e141d3cf2c7980b2; PD=c9b487caa8a7a02b42526734e17becc1ed556f60c8dc13c588be38f6f70444637a065d085a54d1f8; Hm_lpvt_7fc44f078bf7b5e19489428c362109a3=1640335261; yunsuo_session_verify=ee778c7d15a8968d2392213560d47d7b','Host':'www.baiten.cn','Origin':'https://www.baiten.cn','Referer':'https://www.baiten.cn/results/s/aa%253A%2528%25E5%25B9%25BF%25E4%25B8%259C%2529%2BAND%2B%2528pd%253A%255B20180101%2BTO%2B20181231%255D%2529/.html?type=s&sc=15','sec-ch-ua':'" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"','sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'"Windows"','Sec-Fetch-Dest':'empty','Sec-Fetch-Mode':'cors','Sec-Fetch-Site':'same-origin','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}for i in range(len(years)):for j in range(len(provinces)):p = {'q':'aa:(' + str(provinces[j]) + ') AND (pd:[' + str(years[i]) +'0101 TO ' + str(years[i]) + '1231])','fq':'','sc':'35184372088831','pageSize':''}re_1 = requests.post('https://www.baiten.cn/results/filter',headers=header,data=p).textpattern = r'[0-9.]+'regex = re.compile(pattern)result = regex.findall(re_1)index = ['实用新型专利', '发明专利', '外观专利', '发明授权专利', '发明公开专利']column = ['数量']path = 'D:\\YXH\\PythonLearning\\Python数据分析\\实验一\\佰腾网专利数据\\' + str(years[i])isExists = os.path.exists(path)if not isExists:os.mkdir(path)pd.DataFrame(result[:5], index=index, columns=column).to_excel(r'D:\\YXH\\PythonLearning\\Python数据分析\\实验一\\佰腾网专利数据\\' +str(years[i]) + '/' + str(provinces[j]) + '.xlsx')
结果示例
-
佰腾网2008-2018年专利数据

-
佰腾网2018年各省专利数据

-
佰腾网2018年广东省不同类型专利数据

总结
本文调用了selenium实现佰腾网的模拟登录,然后调用requests、re、pandas、os库实现佰腾网2008-2018年各省不同类型专利数据的爬取和本地化存储。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
