根据Excel表格里的名字在高德地图上查找相应的地址

 现在需要高中的地址。高中是用Excel表格存着的,名字统一在第一列,可以有多个表格。

利用高德地图自动查询并存储 

当时学了一些selenium的使用和对Excel的操作 然后写了一下:

合理使用,当时可能 搜索的过于频繁,网页会出验证,然后只能就会退出重进重新访问。

 

from selenium import webdriver
from selenium.webdriver import ActionChains
import xlrd
import xlwt
from selenium.webdriver.common.keys import Keys
import time
import random
addr=input('输入表格的路径:')
browser=webdriver.Chrome()
browser.get('https://www.amap.com')
# 进入高德地图
xx=browser.find_element_by_id('searchipt')

# 创建一个新的表格
print('准备创建一个新Excel表')
new_wbook=xlwt.Workbook(encoding='utf-8')




workbook=xlrd.open_workbook(addr)
print('已经打开输入的Excel表')

sheets=workbook.sheet_names()
print('获取道Excel表的所有表格名字')
# 上面获取到所有表格
for i in sheets:
	s1=workbook.sheet_by_name(i)
	print('此时打开表格的名字是:'+i)
	# 遍历每个表格
	new_wsheet=new_wbook.add_sheet(i)
	print('创建新Excel表中添加了'+i+'表格')
	# 创建新的表格
	row=s1.nrows
	col=s1.nrows
	print('获得了表格的行数和列数')
	# 表格的行和列
	for j in range(0,row):
		try:
			ls=s1.row_values(j)
			print('获取第'+str(j)+'行的信息')
			# 遍历每行的信息
			k=ls[0]
			
			ActionChains(browser).move_to_element(xx).perform()
			print('将光标移至搜索框处')
			xx.clear()
			print('已清空地图搜索框')
			# 清空输入框
			xx.click()
			print('点击搜索框')
			# 点击
			xx.send_keys(k)
			xx.send_keys(Keys.ENTER)
			print('将学校名字输入并搜索')
			# 输入学校名字并且回车
			time.sleep(3)
			ss=browser.find_element_by_class_name('poibox.poibox-normal.amap-marker')
			ActionChains(browser).move_to_element(ss).perform()
			ss.click()
			# 
			print('已点进详细页')
			time.sleep(random.uniform(2,2.5))
			temp=browser.find_element_by_class_name('feedaddr').text#学校的地址信息
			print('获取到学校的地址信息')
			new_wsheet.write(j,0,label=k)#学校名字
			print('将学校的名字插入到表格中')
			new_wsheet.write(j,1,label=temp)
			print('将学校的地址插入到表格中')
			time.sleep(random.uniform(1.1,1.2))
			browser.execute_script('window.scrollBy(0,-100)')
			time.sleep(random.uniform(0.9,1.0))
			browser.execute_script('window.scrollBy(0,100)')
		except:	
			time.sleep(random.uniform(2,3))
			browser.quit()
			browser=webdriver.Chrome()
			browser.get('https://www.amap.com')
			xx=browser.find_element_by_id('searchipt')
	time.sleep(random.uniform(2.2,6.6))
new_wbook.save('1.xls')



 

selenium和 requests爬虫

前几天还用requests爬虫练习,忽然碰到一个问题:F12显示的代码和Ctrl+U显示的代码(我们在程序中得到的)不一样?这就导致了无法继续用requests继续爬虫。

后来查了查可能是网页一些 东西需要动态加载,就是我们到那个位置它才开始 加载,而 requests是针对一次 加载完成。所以就要用selenium 解决了。selenium主要用于一些 动态加载网页的爬虫,当然也可以静态;requests主要是针对静态网页的 爬取。

 

 

webdriver是浏览器驱动:

----刚开始用的时候遇到了 一些问题:打不开 浏览器----》没有驱动,这得下载相应浏览器版本的驱动http://npm.taobao.org/mirrors/chromedriver/放进python的目录下;而且还要注意配置path环境变量,将浏览器的目录添加进去。 

ActionChains主要用于模拟一些行为,比如移动 光标至指定位置,点击,输入,清空……的等,相关使用可以搜一下。

xlrd是用于读取 Excel表格的库

xwt是用于写Excel表格的库

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值