爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!

Python3 的 selenium库可以模拟打开页面,获得加载完成的页面信息,一些基本用法,请自行度娘,就不再赘述了


1.将某城市的所有酒店链接爬取下来。

先打开两个酒店页面

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第1张图片

**

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第2张图片

https://hotel.qunar.com/cn/nanjing/dt-29906?fromDate=2020-05-18&toDate=2020-05-19&highQuality=falsehttps://hotel.qunar.com/cn/nanjing/dt-10236?fromDate=2020-05-18&toDate=2020-05-19&highQuality=true观察一下两个酒店链接有什么不同把两个链接的 ?fromDate=2020-05-18&toDate=2020-05-19&highQuality=false和?fromDate=2020-05-18&toDate=2020-05-19&highQuality=true 去掉再看一下网页没有变化,说明 /dt-29906 和 /dt-10236 是区别酒店的方式现在去主页面找到所有酒店的链接,把类似于 /dt-10236 的字符串提取出来

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第3张图片

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第4张图片

可以看到在酒店图片的标签中和酒店名字的标签中都有链接这里可以先写一个提取链接的正则表达式

r'

只提取类似 /dt-10236 这样的字符串就可以了然后就是逐页提取先找到下一页的位置

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第5张图片

browser.find_element_by_xpath('//div[@class="G_page clearfix"]/p[@class="next fl_right cur able"]').click()
1

用selenium库中的 .click()方法可以模拟点击这样就可以把所有页的酒店链接提取出来了


2.提取每个酒店的信息

url 是 https://hotel.qunar.com/cn/nanjing + 前面提取出的每个酒店对应的字符串进入酒店主页打开开发者工具寻找一下所需要的信息的位置

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第6张图片

可以看到,酒店名称和地址都在这里了

r'

(.*?)

' 1

写个正则表达式,提取出来

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第7张图片

上面其他酒店基本信息的位置请自行根据自己想提取的信息去写正则表达式然后将提取出的信息存入表格

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第8张图片

提取完去哪儿的酒店的信息的表格样式


3.利用百度API和酒店地址将酒店地址的经纬度写入表格

首先在表格中添加两列,用以保存经度和纬度

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第9张图片

然后去百度地图开放平台 链接:http://lbsyun.baidu.com/apiconsole/center#/home申请一个密钥 AK, 申请方法请自行度娘查询地址的经纬度等信息的链接
http://api.map.baidu.com/geocoding/v3/?address= 地址
&output=json&ak= 在百度开放平台申请的AK &callback=showLocation用 xlrd 库来读取前面保存的表格的地址列把地址填入上面的链接中,链接中的信息如下图

用requests库把信息提取出来再用正则表达式把经度和纬度提取出来用xlutils库的xlutils.copy方法把之前xlrd读取的表格对象复制,赋给新的对象再用xlwt库将提取出的经度和纬度写入并保存为新的表格


到此完成所有信息爬取,下图是有经纬度的酒店信息表格示例

爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!_第10张图片

下面是部分代码

酒店链接提取部分代码

browser=webdriver.Chrome()
url='http://hotel.qunar.com/cn/zhenjiang/?fromDate=2020-05-18&toDate=2020-05-19&cityName=%E9%95%87%E6%B1%9F'
browser.get(url)
time.sleep(5)
p0=r'

酒店信息提取部分代码

text_url=url1+i
dirver.get(text_url)
time.sleep(6)
html2=dirver.page_source
p1=r'

(.*?)

' # 酒店名称和地址 p1name=r'

(.*?)(.*?)(.*?)' # 酒店地址2 p2=r'

(.*?)
' # 酒店详情 p2cont=r'联系方式
(.*?)
' # 联系方式 p2item=r'(.*?)' # 基本信息(多少间房) p2words=r'

先用xlutils库的xlutils.copy方法把之前xlrd读取的表格对象复制,赋给新的对象再用xlwt库把经度和纬度信息写入新的对象并保存为新的表格结束

视频案例教程源码加群“1136192749

 

你可能感兴趣的:(爬取去哪儿网酒店信息,再利用百度API将酒店地址的经纬度爬取!)