python应用:selenium之爬取天眼查信息

inform_table.py

  1 # -*-coding:utf8-*-
  2 
  3 from selenium import webdriver
  4 from selenium.webdriver.common.proxy import Proxy
  5 from selenium.webdriver.common.proxy import ProxyType
  6 import time
  7 from bs4 import BeautifulSoup
  8 
  9 
 10 class InformTable:
 11     def __init__(self):
 12         self.proxy = Proxy({'proxyType': ProxyType.MANUAL, 'httpProxy': '115.153.15.128:45491'})
 13         self.browser = webdriver.Firefox(proxy=self.proxy)
 14         self.url = 'https://www.tianyancha.com/'
 15         self.user = '17862977887'
 16         self.pwd = 'oookkk09'
 17         self.isFirstSearch = True
 18         self.company = ''
 19 
 20         self.url_dic = {'New_Message': '/html/body/div[1]/div/span',
 21                         'New_submit': '/html/body/div[1]/div/i',
 22                         'Advertisement': '//*[@id="tyc_banner_close"]',
 23                         'get_login': '/html/body/div[1]/div/div[1]/div[1]/div/div/div[2]/div/div[4]/a',
 24                         'login_user_pwd': '/html/body/div[6]/div[2]/div/div[2]/div/div/div[3]/div[1]/div[2]',
 25                         'login_user': '/html/body/div[6]/div[2]/div/div[2]/div/div/div[3]/div[2]/div[2]/input',
 26                         'login_pwd': '/html/body/div[6]/div[2]/div/div[2]/div/div/div[3]/div[2]/div[3]/input',
 27                         'login_submit': '/html/body/div[6]/div[2]/div/div[2]/div/div/div[3]/div[2]/div[5]',
 28                         'login_state': '/html/body/div[1]/div/div[1]/div[1]/div/div/div[2]/div/div[4]/a',
 29                         'first_search_text': '//*[@id="home-main-search"]',
 30                         'first_search_submit': '/html/body/div[1]/div/div[1]/div[2]/div/div/div[2]/div[2]/div[1]/div',
 31                         'second_search_text': '//*[@id="header-company-search"]',
 32                         'second_search_submit': '/html/body/div[1]/div/div[2]/div/div[2]/div[1]/div',
 33                         'company_name': '/html/body/div[2]/div/div[1]/div/div[3]/div[1]/div/div[3]/div[1]/a/em',
 34                         'company_history_name': '/html/body/div[2]/div/div[1]/div/div[3]/div[1]/div/div[3]/div[4]/span[2]/em',
 35                         'company_url': '/html/body/div[2]/div/div[1]/div/div[3]/div[1]/div/div[3]/div[1]/a',
 36                         'holding_url': '/html/body/div[2]/div[1]/div/div[3]/div[1]/div/div[2]/div[1]/div[5]/div[2]',
 37                         'holding_name': '/html/body/div[2]/div[1]/div/div[3]/div[1]/div/div[2]/div[1]/div[5]/div[1]',
 38                         'financing_url': '/html/body/div[2]/div/div[2]/div[1]/div/div[2]/div[5]/div[2]/div',
 39                         'financing_name': '/html/body/div[2]/div/div[2]/div[1]/div/div[2]/div[5]/div[1]/span[1]',
 40                         'project_url': '/html/body/div[2]/div/div[2]/div[1]/div/div[2]/div[6]/div[2]/div',
 41                         'project_name': '/html/body/div[2]/div/div[2]/div[1]/div/div[2]/div[6]/div[1]/span[1]',
 42                         '2_to_3': '/html/body/div[2]/div[1]/div/div[2]/div[1]/div[2]/div[3]/div[4]/div[1]'}
 43         self.js = {'page_state': 'return document.readyState'}
 44 
 45     # 关闭新消息提醒
 46     def has_new(self):
 47         try:
 48             if u'新的动态' in self.browser.find_element_by_xpath(self.url_dic['New_Message']).text:
 49                 self.browser.find_element_by_xpath(self.url_dic['New_submit']).click()
 50                 self.browser.back()
 51         except Exception:
 52             pass
 53 
 54     # 关闭底部风险提示
 55     def advertisement(self):
 56         try:
 57             self.browser.find_element_by_xpath(self.url_dic['Advertisement']).click()
 58         except Exception:
 59             pass
 60 
 61     # 等待页面加载完成
 62     def complete(self):
 63         while self.browser.execute_script(self.js['page_state']) != 'complete':
 64             time.sleep(0.001)
 65 
 66     # 验证登录状态
 67     def login_success(self):
 68         try:
 69             while u'登录' in self.browser.find_element_by_xpath(self.url_dic['login_state']).text:
 70                 time.sleep(0.5)
 71         except Exception:
 72             pass
 73 
 74     # 用户登录
 75     def login(self):
 76         # 访问网址
 77         self.browser.get(self.url)
 78         self.complete()
 79         # 弹出登录界面
 80         self.browser.find_elements_by_xpath(self.url_dic['get_login'])[0].click()
 81         # 选择登录方式并登录
 82         while True:
 83             try:
 84                 self.browser.find_element_by_xpath(self.url_dic['login_user_pwd']).click()
 85                 break
 86             except Exception:
 87                 time.sleep(1)
 88         self.browser.find_element_by_xpath(self.url_dic['login_user']).send_keys(self.user)
 89         self.browser.find_element_by_xpath(self.url_dic['login_pwd']).send_keys(self.pwd)
 90         self.browser.find_element_by_xpath(self.url_dic['login_submit']).click()
 91         # 验证登录状态
 92         print '正在登录……'
 93         self.login_success()
 94         # 确保登录成功
 95         time.sleep(30)
 96         # 除去新消息
 97         self.has_new()
 98 
 99     # 搜索企业
100     def search_company(self, company):
101         self.advertisement()
102         # 判断是否为第一次搜索
103         if self.isFirstSearch:
104             self.browser.find_element_by_xpath(self.url_dic['first_search_text']).clear()
105             self.browser.find_element_by_xpath(self.url_dic['first_search_text']).send_keys(company.decode('utf8'))
106             self.browser.find_elements_by_xpath(self.url_dic['first_search_submit'])[0].click()
107             self.complete()
108         else:
109             # 关闭多余的窗口
110             while len(self.browser.window_handles) > 1:
111                 self.browser.switch_to.window(self.browser.window_handles[-1])
112                 self.browser.close()
113             # 定位到搜索窗口
114             self.browser.switch_to.window(self.browser.window_handles[-1])
115             # 搜索
116             self.browser.find_element_by_xpath(self.url_dic['second_search_text']).clear()
117             self.browser.find_element_by_xpath(self.url_dic['second_search_text']).send_keys(company.decode('utf8'))
118             self.browser.find_element_by_xpath(self.url_dic['second_search_submit']).click()
119             self.complete()
120 
121         # 判断符合条件的第一条搜索结果
122         if self.browser.find_element_by_xpath(self.url_dic['company_name']).text == company.decode('utf8'):
123             self.browser.find_element_by_xpath(self.url_dic['company_url']).click()
124             # 切换到新页面
125             while 'company' not in self.browser.current_url:
126                 self.browser.switch_to.window(self.browser.window_handles[-1])
127                 self.complete()
128                 time.sleep(0.5)
129             return 'success'
130         else:
131             self.advertisement()
132             try:
133                 if self.browser.find_element_by_xpath(self.url_dic['company_history_name']).text == company.decode('utf8'):
134                     self.browser.find_element_by_xpath(self.url_dic['company_url']).click()
135                     # 切换到新页面
136                     while 'company' not in self.browser.current_url:
137                         self.browser.switch_to.window(self.browser.window_handles[-1])
138                         self.complete()
139                         time.sleep(0.5)
140                     return 'success'
141                 else:
142                     return 'fail'
143             except Exception:
144                 return 'fail'
145 
146     # 获取某属性多页面信息
147     def rest_information(self, array, inform_url):
148         elements_num = len(self.browser.find_elements_by_xpath(inform_url + '/div/ul/li'))
149         for i in range(0, elements_num - 1):
150             # 去除底部广告
151             self.advertisement()
152             time.sleep(1)
153             # 进入下一页
154             self.browser.find_element_by_xpath(inform_url + '/div/ul/li['+str(elements_num)+']/a').click()
155             self.complete()
156             time.sleep(2)
157             # 判断是否刷新页面并添加内容
158             old_start_id = BeautifulSoup(array[-1], 'html.parser').find('tbody').find('tr').find('td').text
159             for c in range(5):
160                 new_page = self.browser.find_element_by_xpath(inform_url + '/table').get_attribute('innerHTML')
161                 new_start_id = BeautifulSoup(new_page, 'html.parser').find('tbody').find('tr').find('td').text
162                 if new_start_id == old_start_id:
163                     time.sleep(3)
164                 else:
165                     array.append(new_page)
166                     break
167 
168         # 如果属性页面数量不对,则重新查找
169         while elements_num != 0 and len(array) != elements_num - 1:
170             print elements_num, len(array)
171             time.sleep(5)
172             self.search_main(self.company)
173 
174     # 获得详细信息
175     def get_information(self):
176         # 获取参股控股信息
177         holding_table = []
178         try:
179             if u'参股控股' in self.browser.find_element_by_xpath(self.url_dic['holding_name']).text:
180                 holding_table.append(self.browser.find_element_by_xpath(self.url_dic['holding_url']+'/table')
181                                      .get_attribute('innerHTML'))
182                 self.rest_information(holding_table, self.url_dic['holding_url'])
183         except Exception:
184             pass
185 
186         # 页面跳转(查询5次,每次未查询到等待2秒,查询不到则认为不存在)
187         times = 0
188         for i in range(5):
189             try:
190                 self.browser.find_element_by_xpath(self.url_dic['2_to_3']).click()
191                 break
192             except Exception:
193                 time.sleep(2)
194                 times += 1
195                 print 'times:' + str(times)
196         if times < 5:
197             self.browser.switch_to.window(self.browser.window_handles[-1])
198             self.complete()
199 
200             # 获取融资历程信息
201             financing_table = []
202             try:
203                 if u'融资历程' in self.browser.find_element_by_xpath(self.url_dic['financing_name']).text:
204                     financing_table.append(self.browser.find_element_by_xpath(self.url_dic['financing_url']+'/table')
205                                            .get_attribute('innerHTML'))
206                     self.rest_information(financing_table, self.url_dic['financing_url'])
207             except Exception:
208                 pass
209 
210             # 获取竞品推荐信息
211             project_table = []
212             try:
213                 if u'竞品推荐' in self.browser.find_element_by_xpath(self.url_dic['project_name']).text:
214                     project_table.append(self.browser.find_element_by_xpath(self.url_dic['project_url']+'/table')
215                                          .get_attribute('innerHTML'))
216                     self.rest_information(project_table, self.url_dic['project_url'])
217             except Exception:
218                 pass
219 
220             return holding_table, financing_table, project_table
221         else:
222             return holding_table, [], []
223 
224     # 提取信息总过程
225     def search_main(self, company):
226         self.company = company
227         company_exists = self.search_company(company)
228         self.isFirstSearch = False
229         if company_exists == 'success':
230             print 'success to search the company'
231             return self.get_information()
232         else:
233             return 'fail to search the company'
234 
235     # 关闭浏览器
236     def exit_driver(self):
237         self.browser.quit()
238 
239 
240 if __name__ == '__main__':
241     work = InformTable()
242     work.login()
243     work.search_main('北京超图软件股份有限公司')
244     work.search_main('北京超图软件股份有限公司')
245     work.exit_driver()

inform_data.py

 1 # -*-coding:utf8-*-
 2 
 3 from bs4 import BeautifulSoup
 4 import urllib2
 5 
 6 
 7 class Analysis:
 8     def __init__(self, source, table):
 9         self.table = table
10         self.source = source
11         self.soup = BeautifulSoup(self.table, 'html.parser')
12 
13         self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:62.0) Gecko/20100101 Firefox/62.0'  # 请求头属性(模拟浏览器访问)
14         self.headers = {'User-Agent': self.user_agent}
15         self.full_name_url = '#web-content .container.pt25 .container.brand-header-block #project_web_top .content .header a'
16 
17     def table_head(self):
18         head = []
19         for th in self.soup.findAll('th'):
20             head.append(th.getText().encode('utf8'))
21         return head
22 
23     def full_name(self, url):
24         response = None
25         while response is None:
26             try:
27                 request = urllib2.Request(url, headers=self.headers)
28                 '''
29                 response = urllib2.urlopen(request, timeout=2)
30                 '''
31                 response = urllib2.build_opener(urllib2.ProxyHandler({'https': '115.153.15.128'})).open(request, timeout=2)
32             except Exception:
33                 pass
34         soup = BeautifulSoup(response, 'html.parser')
35         return soup.select(self.full_name_url)[0].text
36 
37     def table_body(self):
38         table_body = self.soup.find('tbody').findAll('tr')
39         body = []
40         if 'financing' in self.source:
41             turn = 1
42         else:
43             turn = 2
44         for s in range(0, len(table_body), turn):
45             sub_soup = table_body[s].findAll('td')
46             sub_body = []
47             for j in range(len(sub_soup)):
48                 if j != 1 and j != 2:
49                     if 'project' in self.source and (j == 3 or j == 7):
50                         if j == 3:
51                             try:
52                                 # print self.full_name(sub_soup[j].find('a').attrs['href']).encode('utf8')
53                                 sub_body.append(self.full_name(sub_soup[j].find('a').attrs['href']).encode('utf8'))
54                             except Exception:
55                                 sub_body.append(sub_soup[j].getText().encode('utf8'))
56                         if j == 7:
57                             sub_body.append(sub_soup[j].findAll('span')[1].text.encode('utf8'))
58                     else:
59                         sub_body.append(sub_soup[j].getText().encode('utf8'))
60                 body.append(sub_body)
61         return body
62 
63 
64 if __name__ == '__main__':
65     table = '<thead><tr><th class="sort-col">序号</th><th>产品名</th><th width="15%">融资信息</th><th width="15%">成立时间</th><th width="10%">所属地</th><th width="35%">产品介绍</th></tr></thead><tbody><tr><td>1</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="" alt="城际高科信息" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b7ce8258753" target="_blank">城际高科信息</a></td></tr></tbody></table></td><td>战略融资</td><td>2000-01-27</td><td>北京</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">2000年1月成立于北京市海淀区,是北京市高新技术企业,2003年通过了北京市双软认证。公司专注于车载移动信息终端的研发、生产和销售,并构建全国范围的信息服务平台、建设全国移动信息应用数据库;致力于成为中国空间地理信息领域技术开发、产品应用及信息服务的行业先锋。</span><span class="js-split-container" data-num="37" data-length="131">2000年1月成立于北京市海淀区,是北京市高新技术企业,2003年通过了北...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>2</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/653e0b21388414eb7c6ff7a67c7e885c.png@!f_200x200" alt="金建" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/ba777299468" target="_blank">金建</a></td></tr></tbody></table></td><td>战略融资</td><td>1998-11-23</td><td>辽宁</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">沈阳金建数字城市软件有限公司(Shenyang Jinjian Digital City Software Ltd.)是致力于地理信息技术(GIS)的研发与应用,立足于东北、服务于全国的高科技软件企业。公司1998年成立至今,业务规模不断扩大,金建软件已广泛应用于城市规划,专业管网,土地管理、油田建设、勘察测绘、电力电信、公安及房地产等领域,为相关行业GIS的建设和发展做出了积极贡献。金建软件目前已成为东北地区乃至全国最具品牌价值的IT企业之一。</span><span class="js-split-container" data-num="37" data-length="225">沈阳金建数字城市软件有限公司(Shenyang Jinjian Digit...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>3</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/53e43e68f005d65991df712588bf4688.png@!f_200x200" alt="金维软件" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b558b300764" target="_blank">金维软件</a></td></tr></tbody></table></td><td>战略融资</td><td>1999-10-13</td><td>新疆</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">乌鲁木齐金维图文信息科技有限公司1999年由新疆地矿局“物化探计算中心”改制而成,是专业从事行业应用软件、地理信息系统(GIS)开发和空间数据库建设的高科技企业,是新疆维吾尔自治区认定的“高新技术企业、科技企业、软件企业”,是新疆软件行业协会、新疆计算机学会、新疆电子协会的执行副理事长单位,是新疆电子信息产业技术创新战略联盟理事单位。公司自创立以来,本着“基于应用,面向行业”的经营方针,在地矿、电力等多个领域为客户持续了提供高水准、高技术含量的应用方案。</span><span class="js-split-container" data-num="37" data-length="229">乌鲁木齐金维图文信息科技有限公司1999年由新疆地矿局“物化探计算中心”改...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>4</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/fecd18dc63cc1bdea195d4e1cb521911.png@!f_200x200" alt="Enview" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/bcc19251235" target="_blank">Enview</a></td></tr></tbody></table></td><td>A轮</td><td>2015-02-02</td><td>加利福尼亚州/美国</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">Enview是一个地理空间影像服务商,Enview公司希望利用地理空间分析工具帮助石油天然气公司和公共事业机构来监视和管理他们的网络,继而更好、更快速的了解传输系统在哪里发生了故障,避免给人们的生命和财产造成损失。</span><span class="js-split-container" data-num="37" data-length="107">Enview是一个地理空间影像服务商,Enview公司希望利用地理空间分析...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>5</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/14736de9a4fa9daa5a06063cedf5739d.png@!f_200x200" alt="五珀云" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/bc1c5262956" target="_blank">五珀云</a></td></tr></tbody></table></td><td>天使轮</td><td>2016-06-21</td><td>上海</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">五珀云专注于GIS技术与企业应用、大众消费相结合领域,提供专业的地理时空大数据挖掘服务,我们为这个世界创造一个使用地图的新方式,为客户创造新的商业价值。通过地图资源管理、极致地理围栏(Geo-fencing)服务、实时场景智能感知服务、多渠道通知服务、足迹可视化服务、地理空间分析服务、地理网络拓扑服务、软硬件集成解决方案,解决用户各种基于空间和时间维度的行业应用需求。</span><span class="js-split-container" data-num="37" data-length="185">五珀云专注于GIS技术与企业应用、大众消费相结合领域,提供专业的地理时空大...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>6</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="" alt="极云地理" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b2899336763" target="_blank">极云地理</a></td></tr></tbody></table></td><td>天使轮</td><td>2017-04-01</td><td>浙江</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">浙江极云地理信息科技有限公司致力于成为国内专业的地理信息服务提供商。</span><span class="js-split-container" data-num="37" data-length="34">浙江极云地理信息科技有限公司致力于成为国内专业的地理信息服务提供商。</span><a style="cursor: pointer;" class="js-shrink-btn hidden  link-click">详情</a></span></td></tr><tr><td>7</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/f26a175a714d84934e79d8977ee89ca3.png@!f_200x200" alt="WELTOP" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/bb143272647" target="_blank">WELTOP</a></td></tr></tbody></table></td><td>待披露</td><td>1999-11-17</td><td>北京</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">北京威远图易数字科技有限公司(简称WELTOP),专注于三维实景地图信息采集、处理、管理、分享、应用和动态更新技术。是专业的、综合的地理空间信息服务提供商。公司服务于政府和企业的客户,自主研发的PPVISION三维实景地图生产、管理与发布软件系统,为中国的空间信息需求用户提供高性能的软件和硬件产品。</span><span class="js-split-container" data-num="37" data-length="150">北京威远图易数字科技有限公司(简称WELTOP),专注于三维实景地图信息采...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>8</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/aba82b810603df39bd653afb438d404b.png@!f_200x200" alt="开睿动力" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b160b278456" target="_blank">开睿动力</a></td></tr></tbody></table></td><td>待披露</td><td>2004-10-29</td><td>福建</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">开睿动力通信科技有限公司是创新型的技术企业,成立于2004年,注册资本1000万元,是一家具备甲级测绘资质的专业地图服务提供商,拥有10多项自主知识产权,其中软件著作权证8项、专利证书4项、自主知识产权的高速矢量地图引擎,可及时更新、覆盖全国各地的地理空间数据。</span><span class="js-split-container" data-num="37" data-length="131">开睿动力通信科技有限公司是创新型的技术企业,成立于2004年,注册资本10...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>9</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="" alt="佛山宇星创媒" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/bef6a272316" target="_blank">佛山宇星创媒</a></td></tr></tbody></table></td><td>待披露</td><td>2009-08-28</td><td>广东</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">佛山市宇星创媒信息科技有限公司是一家致力于提供基于地理信息系统(GIS)的商业信息增值服务的高新技术企业。 目前公司正在逐步计划通过手机、网站、数字电视、汽车导航等多媒体数字化用户终端,尝试与当前前缘的人际互动工具或平台相结合(如微博、各种即时通讯等),为中国互联网用户提供本地化社区服务,逐步实现在人们的日常生活、消费与企业服务、商业活动等领域,提供到精准的全方位地理信息增值服务。</span><span class="js-split-container" data-num="37" data-length="192">佛山市宇星创媒信息科技有限公司是一家致力于提供基于地理信息系统(GIS)的...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>10</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/caae71a867979291633b5bbc08c5ad2f.png@!f_200x200" alt="宏图智慧" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b4b20314890" target="_blank">宏图智慧</a></td></tr></tbody></table></td><td>-</td><td>2015-08-19</td><td>四川</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">四川宏图智慧科技有限公司主要从事图形信息系统的开发和推广,公司自主开发了具有完全自主知识产权的GWIGS宏图智慧地理信息系统和图形交互系统,是智慧城市、大规模位置服务、图形信息交互应用平台的基础,在大数据应用展示和多系统整合领域具有领先的核心技术。</span><span class="js-split-container" data-num="37" data-length="124">四川宏图智慧科技有限公司主要从事图形信息系统的开发和推广,公司自主开发了具...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>11</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="" alt="图创信息" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/bb090334100" target="_blank">图创信息</a></td></tr></tbody></table></td><td>-</td><td>2013-10-22</td><td>山东</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">青岛图创信息技术有限公司技术实力雄厚,拥有自主知识产权的GIS开发平台(地图引擎)-GISONE,能够满足客户多方面的开发需求。公司团队在国土、燃气、自来水等大型应用系统项目上,具有丰富的开发和实施经验。目前,图创开发的行业应用产品,已在智慧城市、地下管网、远传物联、大数据分析等领域广泛应用。</span><span class="js-split-container" data-num="37" data-length="147">青岛图创信息技术有限公司技术实力雄厚,拥有自主知识产权的GIS开发平台(地...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>12</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/9e49901ed695fa3be25c5514a02cac26.png@!f_200x200" alt="GomSpace" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b7f96316955" target="_blank">GomSpace</a></td></tr></tbody></table></td><td>-</td><td>2007-01-01</td><td>丹麦</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">GomSpace是位于丹麦的空间公司,于2007年成立。我们的使命是通过在专业纳米卫星技术的基础上引入新产品,即组件,平台和系统,从事全球空间系统和服务市场。</span><span class="js-split-container" data-num="37" data-length="79">GomSpace是位于丹麦的空间公司,于2007年成立。我们的使命是通过在...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>13</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="" alt="图葳数码" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b4168256544" target="_blank">图葳数码</a></td></tr></tbody></table></td><td>-</td><td>2007-06-22</td><td>天津</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">公司长期致力于生产电子地图数据产品和其他的地理信息相关内容的业务。可承接地图数据公共设施点的采集业务、数据挖掘和分析服务、遥感影像加工服务、地图基础数据的建库业务、专题地图的定制业务等相关的地图业务</span><span class="js-split-container" data-num="37" data-length="99">公司长期致力于生产电子地图数据产品和其他的地理信息相关内容的业务。可承接地...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>14</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/464b461a2f282b2b96a3e4dbf860beea.png@!f_200x200" alt="中科星图" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b3d50256302" target="_blank">中科星图</a></td></tr></tbody></table></td><td>-</td><td>2014-01-21</td><td>湖南</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">湖南中科星图信息技术有限公司成立于2013年,是一家由中国科学院电子学研究所提供技术、中关村代办股份转让系统挂牌的高科技企业北京丰电科技股份有限公司(证券代码:430211)控股成立的高科技企业,注册资本1000万元。公司依托国家高分辨率对地观测系统湖南数据与应用中心和国家超级计算长沙中心的平台资源,在中国科学院电子学研究所多年积累的空间信息获取处理与应用技术的基础上,专注于发展高分辨率对地观测卫星数据产品及应用服务,提供符合行业应用需求的系统解决方案,努力打造空间信息应用领域的创新品牌。</span><span class="js-split-container" data-num="37" data-length="247">湖南中科星图信息技术有限公司成立于2013年,是一家由中国科学院电子学研究...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>15</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/4f9f725fe7dd06562439b07fee8f4805.jpg@!f_200x200" alt="浙江鸿图" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b41f2235059" target="_blank">浙江鸿图</a></td></tr></tbody></table></td><td>-</td><td>2014-09-22</td><td>浙江</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">鸿图是一家从事地理信息系统建设、地理信息软件开发、具备基础原始数据采集能力和丰富经验的地理信息技术创新型服务性企业。公司拥有国家测绘丙级资质,通过国际ISO9001认证,配备国内外先进的各类专业仪器设设备二十余台套,包括GIS系统开发平台、三维立体定位导航导购技术、三维建模平台、三维扫描设备、三维数字化成图设备、全球卫星定位系统(GPS)接收机、地质雷达、管线定位仪等。公司秉承“求真务实、开拓创新”的企业精神和“数据真实、技术领先、引领需求、服务到位”的经营理念,紧握传统测量命脉,专注地理信息技术的开发和</span><span class="js-split-container" data-num="37" data-length="255">鸿图是一家从事地理信息系统建设、地理信息软件开发、具备基础原始数据采集能力...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>16</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/233118227d2dd3834498efb00850beff.jpg@!f_200x200" alt="天力发测绘" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b4853204102" target="_blank">天力发测绘</a></td></tr></tbody></table></td><td>-</td><td>1996-05-28</td><td>北京</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">天力发测绘是一家高科技地理空间信息企业,是服务于测绘及地理信息相关产业的先进设备和测量系统解决方案的提供商,所涉及领域覆盖天空(航空遥感测绘、无人机及航测软件)、地面(大地测绘、工程测量、移动三维扫描)及地下、水下(地下管网探测、水下地形测绘、变形监测、地质勘察)、地理信息数据采集、处理及应用。</span><span class="js-split-container" data-num="37" data-length="148">天力发测绘是一家高科技地理空间信息企业,是服务于测绘及地理信息相关产业的先...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>17</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/9476c1368e8b55bc854d639c1a0585f9.jpg@!f_200x200" alt="联投万科" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b223e273738" target="_blank">联投万科</a></td></tr></tbody></table></td><td>-</td><td>2010-06-01</td><td>湖北</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">致力于激光雷达(LiDAR)、计算机视觉、无人机以及三维地理信息的研发与应用,是国内领先的激光雷达软硬件和综合服务提供商。目前,已成功自主开发了优秀的激光点云数据管理、分析和建模软件以及航空影像处理等软件。在硬件方面,推出了车载信息平台、无人机平台、飞艇以及直升机等多个系统平台,用来为客户提供快捷、高效的数据采集服务。同时,数字绿土在三维扫描、数字林业、电力巡线、三维地形、智慧城市、文物重建、灾害评估和地籍调查等多个领域拥有成熟系统的解决方案。</span><span class="js-split-container" data-num="37" data-length="224">致力于激光雷达(LiDAR)、计算机视觉、无人机以及三维地理信息的研发与应...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>18</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/31ef6ffd347adb0718a12fc2acdc8268.png@!f_200x200" alt="四维航遥" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b7011331088" target="_blank">四维航遥</a></td></tr></tbody></table></td><td>-</td><td>2003-06-26</td><td>吉林</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">吉林四维航遥信息技术有限公司主要从事地理信息产品的研制和工程服务,包括:遥感影像数据处理;数字摄影测量工程;GIS系统工程建设;数字国土工程;数字农业工程;数字城市工程;基础地理信息数据库和专业地理信息数据库的建设;航测、遥感、测绘及地理信息系统方面的软件开发和系统集成。</span><span class="js-split-container" data-num="37" data-length="136">吉林四维航遥信息技术有限公司主要从事地理信息产品的研制和工程服务,包括:遥...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>19</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/777b0644ea60b096c5e31ef502342f1a.jpg@!f_200x200" alt="FTC友好创达" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/bf8c6193888" target="_blank">FTC友好创达</a></td></tr></tbody></table></td><td>-</td><td>2001-11-02</td><td>北京</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">北京友好创达科技有限公司,成立于1993年,注册资本5000万元,公司长期专注于数字档案和地理空间两大领域,凭借完备的技术体系和丰富的行业经验,整合航空摄影测量设备、图像后处理软件、大幅面输入输出设备、数字化加工管理软件等多项国际先进技术,面向国土、测绘、地矿、水利、电力、军队等行业的千余家企事业单位,提供行业应用解决方案。公司坚持自主创新,多年来与多家政府业务单位、研究所、高校建立了合作关系,共同致力于行业标准制定与技术研发,为行业用户转型升级保驾护航。</span><span class="js-split-container" data-num="37" data-length="230">北京友好创达科技有限公司,成立于1993年,注册资本5000万元,公司长期...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr><tr><td>20</td><td class="left-col"><table class="lazy-img  -alias -text -w36"><tbody><tr><td class="-w36"><div class="logo-text -l2 -w36"><span class="text">暂无</span></div><div class="logo -w36"><img class="img expand-img" data-src="https://img.tianyancha.com/logo/product/f89eed6b55c609d27895b693ef25df5b.jpg@!f_200x200" alt="图创时代" erro-src="https://img.tianyancha.com/logo/teamMember/ye_def.png@!fill_200x200"></div></td><td><a class="link-click" href="https://www.tianyancha.com/brand/b827f228259" target="_blank">图创时代</a></td></tr></tbody></table></td><td>-</td><td>2014-12-18</td><td>北京</td><td class="left-col"><span class="js-shrink-container"><span class="js-full-container hidden">北京图创时代科技有限公司成立于2014年,是专注于提供企业地图云一体化解决方案的高科技企业,致力为商企应用提供“互联网 ”地理智慧,助力企业认知空间的极限,探索未知和可能。首先,为企业、机构和应用开发者的集成开发、应用推广提供一站式的服务支撑,让位置服务与应用更加简单、便捷。让位置服务成为连接、激活和驱动位置生态发展的新的互联网基础设施。</span><span class="js-split-container" data-num="37" data-length="170">北京图创时代科技有限公司成立于2014年,是专注于提供企业地图云一体化解决...</span><a style="cursor: pointer;" class="js-shrink-btn  link-click">详情</a></span></td></tr></tbody>'
66     a = Analysis(source='project_table', table=table)
67     a.table_body()

main.py

 1 # -*-coding:utf8-*-
 2 
 3 import csv
 4 import shutil
 5 from inform_table import InformTable
 6 from inform_data import Analysis
 7 import os
 8 import time
 9 
10 
11 class Main:
12     def __init__(self):
13         # self.read_url = '中关村朝阳园总体数据.csv'
14         self.read_url = '中关村高新技术企业名录库.csv'
15         self.read_title = '法人单位名称'
16         self.companies = []
17         self.company_num = 0
18         self.company_col = 2  # 实验文件文件为0,正式运行为2
19         self.region = 3
20         self.terminate = 0    # 程序中断后新开始的编号(编号=csv文件公司序号-1)
21 
22         self.fail_company = 'result\\search_company_failed.csv'
23         self.fail_message = 'result\\search_message_failed.csv'
24 
25     # 读取企业名称
26     def read(self):
27         with open(unicode(self.read_url, 'utf8'), 'r') as readering:
28             reader = csv.reader(readering)
29             for row in reader:
30                 if row[self.company_col] != self.read_title:
31                     self.companies.append([row[self.company_col]] + [row[self.region]])
32         self.company_num = len(self.companies)
33 
34     def out(self, foldername, filename, out_message):
35         if not os.path.exists('result\\'+foldername.decode('utf8')):
36             os.mkdir('result\\'+foldername.decode('utf8').encode('gb18030'))
37 
38         with open(unicode('result\\'+foldername+'\\'+filename+'.csv', 'utf8'), 'ab') as w:
39             writer = csv.writer(w)
40             writer.writerow(out_message)
41 
42     def writer_message(self, filename, table_name, tables):
43         for table in range(len(tables)):
44             analysis = Analysis(table_name, tables[table])
45             if table == 0:
46                 if 'project' in table_name:
47                     self.out(filename, table_name, analysis.table_head()+['所属园区'])
48                 else:
49                     self.out(filename, table_name, analysis.table_head())
50             items = analysis.table_body()
51             for i in range(len(items)):
52                 if 'project' in table_name:
53                     isBelong = '其他'
54                     if '北京' in items[i][4]:
55                         for c_id in range(len(self.companies)):
56                             if items[i][1] in self.companies[c_id][0]:
57                                 isBelong = self.companies[c_id][1]
58                     self.out(filename, table_name, items[i]+[isBelong])
59                 else:
60                     self.out(filename, table_name, items[i])
61             time.sleep(5)
62 
63     # 查找企业相关信息
64     def search(self):
65         if not os.path.exists('result'):
66             os.mkdir('result')
67         work = InformTable()
68         work.login()
69         for company in range(self.terminate, self.company_num):
70             print company, self.companies[company][0]
71             result = work.search_main(self.companies[company][0])
72             if 'fail' in result:
73                 with open(self.fail_company, 'ab') as w:
74                     writer = csv.writer(w)
75                     writer.writerow([self.companies[company][0]])
76             else:
77                 holding_table, financing_table, project_table = result[0], result[1], result[2]
78                 print len(holding_table), len(financing_table), len(project_table)
79                 if len(holding_table) == 0 and len(financing_table) == 0 and len(project_table) == 0:
80                     with open(self.fail_message, 'ab') as w:
81                         writer = csv.writer(w)
82                         writer.writerow([self.companies[company][0]])
83                 else:
84                     print '正在录入……'
85                     self.writer_message(self.companies[company][0], 'holding_table', holding_table)
86                     self.writer_message(self.companies[company][0], 'financing_table', financing_table)
87                     self.writer_message(self.companies[company][0], 'project_table', project_table)
88         work.exit_driver()
89 
90 
91 if __name__ == '__main__':
92     if os.path.exists('result'):
93         shutil.rmtree('result')
94     thing = Main()
95     thing.read()
96     thing.search()

猜你喜欢

转载自www.cnblogs.com/jpapplication/p/10295803.html