python爬取某查查用selenium终于搞定了!
之前试过用request的方法爬取企查查, 结果完全获取不到信息。经论坛朋友们指点,找到selenium神器,学了两天,终于可以啦!
怕被封号,所以设置了很多等待时间,爬取速度比较慢。
代码如下:
[Python] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
from selenium import webdriver import time from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys import xlrd from xlutils.copy import copy import random ####################################模拟使用IE浏览器登陆#################################### option = webdriver.IeOptions() option.add_argument( '--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"' ) path = 'C:\Program Files (x86)\Internet Explorer\IEDriverServer.exe' driver = webdriver.Ie(executable_path = path, options = option) driver.implicitly_wait( 10 ) ####################################通过名称获取网页#################################### #打开搜索页 driver.get( 'https://www.qcc.com/search?key=%E6%B1%9F%E5%AE%81%E5%8E%BF%E8%93%9D%E5%A4%A9%E7%A0%96%E5%8E%82' ) time.sleep( 20 ) # 20s内手动登录 #输入搜索词 #corps = ['广州海洋勘探开发总公司', '广东车海洋环保科技有限公司', '广东粤新海洋工程装备股份有限公司', '广东省海洋工程职业技术学校(广东省海洋工程技工学校)',] #'广东华风海洋信息系统服务有限公司', '广州海洋天网科技股份有限公司', '中船海洋与防务装备股份有限公司', '广州海洋生物科普有限公司'] for i in range ( 0 , len (corps)): corp = corps[i] #清空搜索框 driver.find_element_by_id( 'headerKey' ).clear() #向搜索框输入搜索词 driver.find_element_by_id( 'headerKey' ).send_keys(corp) time.sleep( 6 ) try : #获取公司链接 link = driver.find_element_by_xpath( '//a[@class="list-group-item keyMoveItem"]' ).get_attribute( "href" ) #打开公司链接 driver.get(link) time.sleep( 6 ) except : print (corp + ':未查找到信息!' ) ####################################获取信息#################################### #获取子界面 elements = driver.find_elements_by_class_name( 'company-nav-head' ) for element in elements: ele = element.get_attribute( 'href' ) #点击基本信息 if 'base' in ele: element.click() #获取公司名称 corpname = driver.find_element_by_xpath( '//div[@class="row title jk-tip"]/h1' ).text #获取所属行业 try : hangye = driver.find_element_by_xpath( '//table[@class="ntable"]//tr[4]/td[6]' ).text except : hangye = 'None' #获取人员规模 try : renyuan = driver.find_element_by_xpath( '//table[@class="ntable"]//tr[6]/td[2]' ).text except : renyuan = 'None' #获取经营范围 try : jingying = driver.find_element_by_xpath( '//table[@class="ntable"]//tr[9]/td[2]' ).text except : jingying = 'None' #获取标签 try : tags = driver.find_elements_by_xpath( '//div[@class="row tags"]/span' ) tagname = [] for tag in tags: tagname.append(tag.text) tagname = "、" .join(tagname) except : zl = "None" #print(corpname + '-'+ hangye + '-'+ renyuan + '-'+ jingying + '-'+ tagname) #点击专利信息 elif 'assets' in ele: element.click() #获取科技创新含量 try : techscore = driver.find_element_by_xpath( '//div[@class="zlchart-tcount"]/span' ).text except : techscore = "None" #获取专利数量 try : zlcount = driver.find_element_by_xpath( '//aspan[@class="title"]/span[@class="tbadge"]' ).text except : zlcount = "None" #获取专利信息 try : zlments = driver.find_elements_by_xpath( '//section[@id="zhuanlilist"]//table[@class="ntable ntable-odd"]//tr/td[5]' ) zls = [] for zlment in zlments: zls.append(zlment.text) zl = "、" .join(zls) except : zl = "None" #print(corpname + '-' + techscore + '-' + zlcount + '-' + zl) else : pass time.sleep( 4 ) ####################################保存信息#################################### #保存到excel中 rexcel = xlrd.open_workbook( "C:/Users/SNT/Desktop/qcc.xls" ) table = rexcel.sheets()[ 0 ] # 打开第一个sheet rows = table.nrows # 获取行数 # 用xlutils方法追写excel excel = copy(rexcel) # 用xlutis提供的copy方法将xlrd对象转化为xlwt对象 sheet = excel.get_sheet( 0 ) # 获取第一个sheet sheet.write(rows, 0 , rows) sheet.write(rows, 1 , corpname) sheet.write(rows, 2 , tagname) sheet.write(rows, 3 , hangye) sheet.write(rows, 4 , renyuan) sheet.write(rows, 5 , jingying) sheet.write(rows, 6 , techscore) sheet.write(rows, 7 , zlcount) sheet.write(rows, 8 , zl) sheet.write(rows, 9 , corp) excel.save( "C:/Users/SNT/Desktop/qcc.xls" ) print (corp + '信息保存完毕!' ) sltime = 30 * random.random() print ( '休息' + str (sltime) + 's......\n' ) time.sleep(sltime) print ( str (i + 1 ) + '家公司信息保存完毕' ) #关闭浏览器 driver.quit() |
运行结果:
免费评分
分类:
🥧python爬抓
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架