python实现爬取中国商标网信息去天眼查爬取电话
程序员文章站
2024-01-20 21:13:04
...
#python功能强大非常少的代码轻松实现各种网站资源爬取,如电话信息,vip素材网等
#下面介绍用python爬取中国商标网信息去天眼查爬取法人电话与公司地址提高销售效率
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from db.name.header_api import Headers, HeadersCookie, sb_num, get_user_agent_pc
num_text = sb_num # 多少期数
rows = [] # 批量信息列表
sb_num_list = [] # 注册号列表换取图片
gs_name_list = [] # 去重后公司列表
gs_name_list1 = [] # 公司列表换取电话与地址
gs_name_list2 = [] # 带公司名,注册号,商标名
gs_name_list3 = []
import requests
import re
import time
from lxml import html
etree =html.etree
import pymysql
import time
import re
import json
import csv
import xlwt # 存入xlsx文件
import xlrd # 获取现有的行数
from xlutils.copy import copy
import os
import requests
from lxml import html # xls
def str_true(str):
a1 =re.search('[A-Z, a-z]', str) # 是否含有大小写字母
if a1 :
return False # 如果有一个存在就不能用为假
else:
return True # 都没有能用为真
# 标题写入excel
def write_excel_xls(path, sheet_name, value):
index = len(value) # 获取需要写入数据的行数
workbook = xlwt.Workbook() # 新建一个工作簿
sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格
for i in range(0, index):
for j in range(0, len(value[i])):
sheet.write(i, j, value[i][j]) # 像表格中写入数据(对应的行和列)
workbook.save(path) # 保存工作簿
print("xls格式表格写入数据成功!")
# 追加
def write_excel_xls_append(path, value):
index = len(value) # 获取需要写入数据的行数
workbook = xlrd.open_workbook(path) # 打开工作簿
sheets = workbook.sheet_names() # 获取工作簿中的所有表格
worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
rows_old = worksheet.nrows # 获取表格中已存在的数据的行数
new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象
new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格
for i in range(0, index):
for j in range(0, len(value[i])):
new_worksheet.write(i + rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入
new_workbook.save(path) # 保存工作簿
# print("xls格式表格【追加】写入数据成功!")
def sb_cs(pages):
sb_num_list.clear()
gs_name_list.clear()
gs_name_list1.clear()
gs_name_list2.clear()
gs_name_list3.clear()
head2 = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 QQBrowser/4.4.119.400'
headers2 = {
# 'user-agent': head2,
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': 'UM_distinctid=16eac05d31a122-071a188af83977-32365f08-100200-16eac05d3232e2;tmas_cookie=51947.7681.15402.0000',
'Host': 'wsgg.sbj.cnipa.gov.cn:9080',
'Origin': 'http://wsgg.sbj.cnipa.gov.cn:9080',
'Referer': 'http://wsgg.sbj.cnipa.gov.cn:9080/tmann/annInfoView/annSearch.html?annNum=',
'User-Agent': get_user_agent_pc(), # 随机获取一个
# 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
datas = {
"page": pages,
"rows": '100',
"annNum": num_text, # 公告期数
'annType': 'TMZCSQ',
'tmType': '',
'coowner': '',
'recUserName': '',
'allowUserName': '',
'byAllowUserName': '',
'appId': '',
'appIdZhiquan': '',
'bfchangedAgengedName': '',
'changeLastName': '',
'transferUserName': '',
'acceptUserName': '',
'regNum': '',
'regName': '',
'tmName': '',
'intCls': '',
'fileType': '',
'totalYOrN': 'true',
'appDateBegin': '', # 日期开始
'appDateEnd': '', # 日期结束
'agentName': '', # 代理人
}
s = requests.session()
urls1 = 'http://wsgg.sbj.cnipa.gov.cn:9080/tmann/annInfoView/annSearchDG.html' # 信息地址
response = s.post(urls1, data=datas, headers=headers2 ) # post参数
print(response)
jsons = json.loads(response.text)
info = jsons['rows']
print('总条数', len(info))
for i in range(len(info)):
item1 = info[i]['ann_num'] # 多少期
item2 = info[i]['ann_date'] # 公布时间
item3 = info[i]['ann_type'] # 类型
item4 = info[i]['reg_num'] # 注册号
item5 = info[i]['reg_name'] # 公司名
item6 = info[i]['tm_name'] # 商标
item7 = info[i]['page_no']
item8 = info[i]['id'] # id
# print(item7, type(item7), item4, type(item4), type(str(item7)),item7)
# 字符串中有点,有数字,有字母的不要
if item3 == '商标初步审定公告' and len(item5) > 11 and str_true(item5): # 过滤
sb_num_list.append(item4)
item_list = [str(item7), item5, item4, item6]
gs_name_list1.append(item5)
gs_name_list2.append(item_list)
print('第', i + 1, '条', item1, item2, item3, item4, item5, item6, str(item7))
print('注册号总共', len(sb_num_list))
print('公司名总共', len(gs_name_list2))
for index, each in enumerate(gs_name_list1):
if each not in gs_name_list3: # 新存入的列表
gs_name_list3.append(each)
gs_name_list.append(gs_name_list2[index])
print(index + 1, each, 'index', 'each', '第', str(pages), '页')
book_name_xls = os.getcwd() + '/text' + '/{}.xls'.format(num_text + '公司名' + str(pages))
value_title = [["图片编号", "公司名", "注册号", "标名"], ]
if os.path.exists(book_name_xls):
write_excel_xls_append(book_name_xls, gs_name_list)
else:
write_excel_xls(book_name_xls, '公司名列表', value_title)
write_excel_xls_append(book_name_xls, gs_name_list)
if __name__ == "__main__":
# 执行第1步,获取过滤后的公司信息
for i in range(1, 41): # 1到40,
pages = i
sb_cs(pages) # 一次获以所有的list
print('第', str(pages), '页')
# 版面有限没有全部提交代码,欢迎加qq交流470732554
上一篇: Qt与JS相互调用
下一篇: 为什么网代运营这么的受欢迎?有哪些原因?