共计 4310 个字符,预计需要花费 11 分钟才能阅读完成。
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, valuei) # 像表格中写入数据(对应的行和列)
- workbook.save(path) # 保留工作簿
- print(“xls 格局表格写入数据胜利!”)
外汇代理 https://www.kaifx.cn/ib/ 追加
- 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, valuei) # 追加写入数据,留神是从 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 = infoi # 多少期
- item2 = infoi # 颁布工夫
- item3 = infoi # 类型
- item4 = infoi # 注册号
- item5 = infoi # 公司名
- item6 = infoi # 商标
- item7 = infoi
- item8 = infoi # 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), ‘ 页 ’)
正文完