1、今天主管提了个需求,需要查询上海市公布一批高新技术企业的基本

信息,名单大概有2890个,名单地址
    http://stcsm.sh.gov.cn/gk/tzgq/gqgg/bsgqgg/jtgq/153798.htm

2、下载打开一看,pdf格式是这样子的,112页,这也不能直接用啊,

3、打开Chrome,搜索pdf 转 excel,成功将pdf 文件转换成了112个excel 表
继续搜索:python将Excel 表合并,csdn上大佬教程很多,天下代码一大抄,

不抄白不抄。

成功合并Excel表,整理丢到数据库,考虑实现方式。

4、理论上实现的方式:

登录网页版本实现的方式: 只要不停的检索公司名称即可得到公司信息

但是只有会员才能拿到全部信息,好的 ,去某宝花一块钱买一天的会员

近3000多条信息,手工查询肯定不行,想想上代码吧。

5、代码实现,理论上人通过浏览器也可以实现,

模拟浏览器登录---脚本自动填充搜索---下载信息---退出,一顿操作猛如虎,开始上代码:

#coding =utf-8import time
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains                 #模仿鼠标动作的
from selenium.webdriver import ChromeOptionsdef login():global driver#去除浏览器页面显示自动化脚本控制的提示option = ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])driver = Chrome(options=option)#打开企查查页面driver.get('https://www.qcc.com/?utm_source=baidu&utm_medium=cpc&utm_term=pzsy')#点击登陆driver.find_element_by_xpath("//div/ul/li[14]/a/span").click()time.sleep(1)#定位到新弹框driver.current_window_handle#点击密码登录driver.find_element_by_xpath('//*[@id="verifyLoginPanel"]/div[1]/div[2]').click()# 定位账号输入框,输入账号login = driver.find_element_by_id('nameNormal')time.sleep(1.2)login.send_keys('13785607088')# 定位密码输入框,输入密码pwd = driver.find_element_by_id('pwdNormal')time.sleep(1)pwd.send_keys('123456A')#定位滑块输入框hua_kuai = driver.find_element_by_id('nc_2_n1z')return hua_kuaidef get_track(distance):            # distance为传入的总距离global drivertrack = []                      # 移动轨迹current = 0                     # 当前位移mid = distance *3/ 5            # 减速阈值t = 0.2                         # 计算间隔v = 1                           # 初速度while current < distance:if current < mid:a = 4               # 加速度为2else:a = -3              # 加速度为-2v0 = v                  # 当前速度v = v0 + a * t          # 移动距离fmove = v0 * t + 1 / 2 * a * t * t# 当前位移current += move         # 加入轨迹track.append(round(move))return trackdef move_to_gap(slider, tracks):     # slider是要移动的滑块,tracks是要传入的移动轨迹global driverActionChains(driver).click_and_hold(slider).perform()for x in tracks:ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()time.sleep(0.5)ActionChains(driver).release().perform()time.sleep(1)driver.find_element_by_id('user_login_normal').click() #点击登陆if __name__=='__main__':move_to_gap(login(), get_track(308))

结果被企查查登录页面打脸,selenium 调用Chrome会被检测 ,滑块验证不通过

百度了一下,各种方式试了一下,不太好解决,修改了一下代码最后偷懒使用页

面扫码登陆。登陆成功页面

上代码:
'''from utils import config from utils import del_Label from utils import myslq_client
'''
其中上面这三行是连接数据库的基本配置文件,按照个人的喜好自己配置即可
完整代码:
#coding =utf-8import time
from lxml import etree
from utils import config
from utils import del_Label
from utils import myslq_client
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.keys import Keysdef getDetailInfo(data,k,count):#列表页解析信息name = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/a/em/text()')name = ",".join(",".join(name)).replace(",", '')faRen = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/p[1]/a/text()')[0]zhuCe = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/p[1]/span[1]/text()')[0]Ctime = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/p[1]/span[2]/text()')[0]mail = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/p[2]/text()')mail = "".join(mail)mail = del_Label.Deltag2(str(mail))mail = "".join(mail)phone = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/p[2]/span/text()')phone = ''.join(phone)phone = del_Label.Deltag2(str(phone))address = data.xpath('//*[@id="search-result"]/tr[1]/td[3]/p[3]/text()')address = ''.join(address)address = del_Label.Deltag2(str(address))data = {"name": name,"faRen": faRen,"zhuCe": zhuCe,"Ctime": Ctime,"mail": mail,"phone": phone,"address": address,}count = count+1# config.qiChaCha(data)  存储到mysql数据库print(data)print("当前采集第{count}条,当前查询公司是:{company}".format(count=count, company=k))def login():try:global driver#去除浏览器界面 浏览器正在接受自动化程序控制option = ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])driver = Chrome(options=option)#打开企查查driver.get('https://www.qcc.com/?utm_source=baidu&utm_medium=cpc&utm_term=pzsy')#定位点击登录框driver.find_element_by_xpath("//div/ul/li[14]/a/span").click()time.sleep(1)#定位新弹框driver.current_window_handledriver.find_element_by_xpath('//*[@id="verifyLoginPanel"]/div[1]/div[2]').click()# 设置延时,用企查查app扫码登陆time.sleep(15)#定位登录后页面搜索框,输入要查询的公司,按回车键input_company = driver.find_element_by_xpath('//*[@id="searchkey"]')input_company.clear()  # 清空输入框k = "上海欧朔智能包装科技有限公司"input_company.send_keys(k)input_company.send_keys(Keys.ENTER)  # 输入回车#下载单前页面,进行页面解析,提取数据s = driver.page_sourcedata = etree.HTML(s)count = 0getDetailInfo(data,k,count)#页面发生了变化再次定位到新的页面driver.current_window_handle#连接数据库,调取数据db = myslq_client.ff_task()cursor = db.cursor()sql1 = "SELECT name  FROM companys limit 1,20;"cursor.execute(sql1)result = cursor.fetchall()count = 0for item in result:k = item[0]if len(k) > 4:time.sleep(1)#定位第二页输入框,传入compangy = driver.find_element_by_id('headerKey')compangy.clear()time.sleep(1)compangy.send_keys(k)compangy.send_keys(Keys.ENTER)# 下载单前页面,进行页面解析,提取数据s = driver.page_sourcedata = etree.HTML(s)count+=1getDetailInfo(data,k,count)except Exception as e:print(e)
if __name__ =='__main__':login()

程序运行结果:

企查查之企业信息查询自动化相关推荐

  1. 读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储

    2019独角兽企业重金招聘Python工程师标准>>> 今天这个小爬虫是应朋友,帮忙写的一个简单的爬虫,目的是爬取企查查这个网站的企业信息. 编程最终要的就是搭建编程环境,这里我们的 ...

  2. python 爬取企业注册信息_读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储...

    今天这个小爬虫是应朋友,帮忙写的一个简单的爬虫,目的是爬取企查查这个网站的企业信息. 编程最终要的就是搭建编程环境,这里我们的编程环境是: python3.6 BeautifulSoup模块 lxml ...

  3. python爬虫从企查查获取企业信息-手工绕开企查查的登录验证

    想要从企查查爬取企业信息,如果没有登录直接检索,邮箱.电话都被隐藏了: 上面的图片是之前截的图,今天再次检索,好像又可见了: 不过单击查看详情时,还是会被隐藏: 不管怎么说,只要企查查想限制登录,总会 ...

  4. C端企业信息查询网站对比分析:企查查vs天眼查vs启信宝

    近年来随着商业环境向好,伴随着国家暖企稳企利好政策的实施,新增企业数量逐年增加,中小微企业的增速尤其明显.但新增企业相关信息查找难度大,越来越多的个人用户和企业对于获取和查询企业信息的需求日益增长,因 ...

  5. 【福利】免费领取企业信息查询两年VIP会员

    天眼查.企查查这种查询企业信息的工具,相信大家都有所了解.(但他们是要钱的)最近找工作的朋友也挺多的,通过这些工具了解一下要去面试或入职的公司,也可以从各种角度更加了解公司情况.今天分享个免费领取企业 ...

  6. 有哪些好用的企业信息查询系统

    销售人员在于客户沟通时,需要了解相关企业信息.在一些行业网站或b2b平台.企业信息查询系统上搜索企业信息都是一个不错的选择. 前言 随着互联网的发展,给人们的生活带来了极大的便捷,大多数人都喜欢上网查 ...

  7. 日常学习|从企查查获取企业工商信息

    这里临时快速写出来的简陋代码,能实现简单的功能 我找到了天眼查.企查查和国家企业信用信息公示系统这三个可以获取企业工商信息的网站 一开始是想要从'国家企业信用信息公示系统'入手的,可惜我对js的代码不 ...

  8. 企查查访问超频怎么办_怎样删除企查查的不良信息

    公司的不良信息要怎样清除呢?这个是清除不了的除非找专业人士否者一点办法也没有.接下来专业人士教你轻松处理不良信息. 第一步: 打开百度在搜索框内搜索"功夫茶公关" 第二步: 找到对 ...

  9. relation-graph实现企业架构图,关系图等(天眼查,企查查等企业架构图等实现)

    企业架构图,关系图等实现 业务需求 1.公司想要的效果图 2.relation-graph插件自带的dome效果图 3.实现效果图 官方文档地址 实现代码 接口返回数据格式(最最最重要点) 动态效果图 ...

最新文章

  1. Python基础10-函数基础
  2. 程序员转型人工智能工程师,如何在百忙之中不走岔路
  3. java中位与运算符_Java中位运算符和的区别
  4. 性能之巅:Linux网络性能分析工具-netstat,ifconfig,nicstat,traceroute,tcpdump
  5. 第七讲 SCCM2012部署Endpoint Protect
  6. BugkuCTF-Misc:come_game
  7. 全球 android手机排行 2013,全球Android手机性能排行 三星Note 3夺魁
  8. 前端学习(3146):react-hello-react之getDenvied
  9. 获取应用程序信息.h
  10. Java 中接口和抽象类竟然有 7 点不同?
  11. href标签带上了localhont地址怎么删除_如何找回删除的微信好友?
  12. Python中为啥 ‘abcd‘<‘ad‘ 答案他来啦
  13. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
  14. python黑马程序员课后答案_黑马程序员Python教程[Python标准库(一)
  15. FontLab 7 for Mac(字体编辑器)
  16. 最全电商分类信息(08)
  17. vue 中父子组件传递通信(看图就会了,皮卡皮卡)
  18. VIBE运动检测算法实现(二)
  19. 【HTML】网页的基本结构
  20. Erasure Code - EC纠删码原理

热门文章

  1. 【微信公众号】获取获取微信的access_token
  2. silverlight | chrion.exe-动态语言创建silverlight
  3. 网页设计颜色及平面设计的常用16进制+RGB色值表参考大全
  4. Max OS 打开 JD-GUI 报错
  5. 原生JS使用input上传图片
  6. 08.音频系统:第002节_Android音频系统框架简述
  7. Qt 多线程bug:moc_widget.cpp:-1: error: undefined reference to `Mythread::~Mythread()‘:-1:
  8. 速达财务软件未能连接服务器,速达3000财务软件使用常见问题
  9. IP地址和子网的划分详解
  10. 宽带连不上网原因及解决办法