目录

  • 准备工作
  • 一、webdriver部分
  • 二、定位到新页面
  • 三、提取酒店信息
    • ??这里要注意??
  • 四、输出结果
  • 五、全部代码

准备工作

1.pip install selenium
2.配置浏览器驱动、配置其环境变量
Selenium3.x调用浏览器必须有一个webdriver驱动文件
Chrome驱动文件下载chromedrive
Firefox驱动文件下载geckodriver
具体步骤自行百度
3.先确保webdriver可以正常使用

一、webdriver部分

要利用代码控制浏览器依次点击及修改


具体代码:

    driver = webdriver.Chrome()driver.get("https://hotel.qunar.com")# 选取城市toCity = driver.find_element_by_xpath("//input[@tabindex='1']")#用xpath定位到城市的输入框 粘贴刚刚复制的xpathtoCity.clear()#清除输入框原本的数据toCity.send_keys("上海")#输入上海    toCity.send_keys(Keys.TAB)#输入TAB键time.sleep(2)

同样的方式定位到其他三个需要修改的部分:
注意定位到日期之后要多执行一步CTRL-A全选然后再删除
具体代码:

    # 选取开始日期checkInDate = driver.find_element_by_xpath("//input[@tabindex='2']")checkInDate.click()checkInDate.send_keys(Keys.CONTROL, "a")#定位到该搜索框后执行CTRLA全选checkInDate.send_keys(Keys.DELETE)checkInDate.send_keys("2020-10-14")# 选取结束日期checkOutDate = driver.find_element_by_xpath("//input[@tabindex='3']")checkOutDate.click()checkOutDate.send_keys(Keys.CONTROL, "a")checkOutDate.send_keys(Keys.DELETE)checkOutDate.send_keys("2020-10-15")# 进行搜索search = driver.find_element_by_xpath("//a[@tabindex='5']")search.click()

注意这里的代码不要放到单独的函数里再在主函数中调用 会导致页面跳转后直接关闭浏览器

二、定位到新页面

首先页面跳转后要先定位到当前页面 本次获取这几个信息

这里我无法直接获取到当前页面的html
所以先获取当前页面的url再用基础爬虫框架进行爬取
如果不加这段代码 我当时无法定位到跳转后的页面 估计是个人问题?

 #定位到当前页面time.sleep(2)#这句必须要有driver.switch_to.window(driver.window_handles[0])#这里如果点击搜索后出来的是另一个页面  就改为【1】如果还是只有这一个页面就是【0】

这是我当时只有一个页面但写成【1】的报错

三、提取酒店信息

new_url = driver.current_url
用该语句提取到当前页面的url

res = requests.get(new_url,headers = headers,cookies=cookies)
text = etree.HTML(res.text)
'''content = response.text
text = parsel.Selector(content)'''

??这里要注意??

我这里一开始用text = parsel.Selector(content)解析
输出的文本就是这样 具体原因也不知道 同学用这个语句可行


后来改为
text = etree.HTML(res.text)用这个解析 如果直接输出

输出是<Element html at 0x2ba79195908>这样的
去百度 说需要加这样一句语句

#转为string
text1 = html.tostring(text[0])
#编码'utf-8'
text2 = HTMLParser().unescape(text1.decode('utf-8'))

没啥用
直接用xpath语句可以直接定位到
具体代码:xpath语句

hotel_name = text.xpath('//div[@class="cont"]/p[@class="name"]/a/text()')
hotel_gold = text.xpath('//div[@class="operate fl_right"]/p[@class="price_new"]/a/text()')
hotel_addres = text.xpath('//div[@class="cont"]/p[@class="adress"]/text()')

四、输出结果

这里只提取了第一页 着急交作业 先就这样吧 hiahia

五、全部代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
import requests
from lxml import etreeif __name__=='__main__':driver = webdriver.Chrome()driver.get("https://hotel.qunar.com")# 选取城市toCity = driver.find_element_by_xpath("//input[@tabindex='1']")#用xpath定位到城市的输入框toCity.clear()#清除输入框原本的数据toCity.send_keys("上海")#输入上海    toCity.send_keys(Keys.TAB)#输入TAB键time.sleep(2)# 选取开始日期checkInDate = driver.find_element_by_xpath("//input[@tabindex='2']")checkInDate.click()checkInDate.send_keys(Keys.CONTROL, "a")checkInDate.send_keys(Keys.DELETE)checkInDate.send_keys("2020-10-14")# 选取结束日期checkOutDate = driver.find_element_by_xpath("//input[@tabindex='3']")checkOutDate.click()checkOutDate.send_keys(Keys.CONTROL, "a")checkOutDate.send_keys(Keys.DELETE)checkOutDate.send_keys("2020-10-15")# 进行搜索search = driver.find_element_by_xpath("//a[@tabindex='5']")search.click()#定位到当前页面time.sleep(2)driver.switch_to.window(driver.window_handles[0])new_url = driver.current_urlheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}cookies={'QN1':'00005f00319829df5c702e97','HN1':'v1b1c8303c8baa2359ebb145a991a74a6f','HN2':'quzqqcqsngqlz','QN300':'organic','csrfToken':'DEKN7FH5xNSuYx6iemD47gRY7vw7IEDD','QN205':'organic','QN277':'organic','_i':'RBTjeCcd1wEx33hRlirI_q1t88ex','_vi':'cXbZyZ4BEOh4wBX9J1cQYcFSDw7dMnuW6r866eG6uTLr2331x2aHSq2To22tuRaNX98Df2nZGmhz0cLAr7upqmqCbdOQAIdmlWtslBHfje5IuNMQw8EFJdQqcYryaJwEVTuYNxcCm_65Ngnh_WrURpXQy7Hcm3ytO0twTZsG4AtJ','QN269':'4EFF41210D2E11EB8470FA163E9C4675','fid':'13f15660-e827-4b68-b89b-58c65d29e4ba','QN267':'01176786801cc3c53c8','QN271':'0fd118d6-0b4a-4ba3-9005-e8a223f2d096'}res = requests.get(new_url,headers = headers,cookies=cookies)text = etree.HTML(res.text)'''content = response.texttext = parsel.Selector(content)'''hotel_name = text.xpath('//div[@class="cont"]/p[@class="name"]/a/text()')hotel_gold = text.xpath('//div[@class="operate fl_right"]/p[@class="price_new"]/a/text()')hotel_addres = text.xpath('//div[@class="cont"]/p[@class="adress"]/text()')#hotel_Dict = list(name +" "+ value +" "+ money + "起" for name, value, money in zip(hotel_name, hotel_gold, hotel_money))print(hotel_name)print(hotel_addres)print(hotel_gold)

想要提取所有信息,进一步优化的可以参考这篇知乎
Python+Selenium爬取去哪儿网信息

python selenium爬取去哪儿网的酒店信息——详细步骤及代码实现相关推荐

  1. python爬取酒店信息_python selenium爬取去哪儿网的酒店信息(详细步骤及代码实现)...

    准备工作 1.pip install selenium 2.配置浏览器驱动.配置其环境变量 Selenium3.x调用浏览器必须有一个webdriver驱动文件 Chrome驱动文件下载chromed ...

  2. python selenium 爬取去哪儿网的数据

    python selenium 爬取去哪儿网的数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/selenium+qu ...

  3. 【爬虫】用Python爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具)

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/det ...

  4. python+selenium爬取链家网房源信息并保存至csv

    python+selenium爬取链家网房源信息并保存至csv 抓取的信息有:房源', '详细信息', '价格','楼层', '有无电梯 import csv from selenium import ...

  5. 使用python+selenium爬取同城旅游网机票信息

    最近使用python+selenium爬取了同城旅游网机票信息 相关主要代码如下,通过模拟人为操作,拿下了这个机票列表的html代码,然后就可以使用xpath或者re等方式从中提取需要的字段信息了. ...

  6. python +selenium 爬取淘宝网商品信息

    前几天用python爬取豆瓣关于电影<长城>的影评,发现豆瓣的网页是静态的,心中一阵窃喜.以为对于动态网页了解的不是太多.但是主要是用cookie加headers爬取的.效果还不错,爬取了 ...

  7. python爬取去哪里_Python爬取去哪儿网热门旅游信息

    import requests from pyquery import PyQuery as pq #让使用者自行输入要查询的旅游地 travel_name =input("请输入你要查询的 ...

  8. 给大家整理了一篇Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 1 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的 ...

  9. 爬取大众点评网的酒店信息

    输入城市的拼音,就能爬取大众点评上面该城市酒店的信息,将数据写入 csv 文件. 不完善点: 只能输入拼音,当然可以下载第三方库 pinyin 进行转换. 未对输入的城市进行判断 . 代码如下: im ...

最新文章

  1. go select 与 for 区别_Go 面试每天一篇(第 102 天)
  2. Android 不同阶段 Logo 显示
  3. JavaScript学习笔记——underscore操作对象的方法
  4. Ranger开源流水线docker化实践案例
  5. log4net 使用手记
  6. 计算机考研哈理工好吗,哈尔滨理工大学考研难吗?一般要什么水平才可以进入?...
  7. Atitit 重大问题解决法---记不住问题的解决 目录 1. 记不住的原因 1 2. 大脑存储内容分布 2 2.1. Jvm的存储机制 2 2.2. 人的存储机制 2 2.2.1. 图片区视觉区
  8. LBMALL V3.1.1 多用户商城系统功能说明
  9. 信用体系,生态之魂!——保险科技生态建设
  10. 低资源和跨语言NER任务的新进展:词级别数据增强技术
  11. php的gc回收机制,php垃圾回收机制相关(GC)
  12. 穆大叔:18年生涯让我抬头挺胸 我是像士兵般离开
  13. requires INJECT_EVENTS permission
  14. 如何打造极速F1赛事?乐视云用六路信号还原比赛现场
  15. mini Vue的实现 Vue工作原理简析
  16. matlab进行傅里叶分析
  17. Windows xp sp3简体中文正式版下载地址
  18. 揭秘:蓝光光碟“造”太阳能电池的神奇之处
  19. 读书笔记-精准努力-励志本身就已经让你爽了以为自己真这样做了
  20. WIN10 装VMvare+Mac OS X

热门文章

  1. jzoj3424. 【NOIP2013模拟】粉刷匠
  2. 深度资讯|美团王兴带头承诺廉洁自律,互联网公司也需要“人民的名义”
  3. 推荐8个好用的Linux音乐播放器~
  4. 什么是stm32的部分重映像与完全重映像
  5. iOS15 beta版本安装不成功 || app要求更新
  6. mysql数据库自动降级_mysql降级caveats
  7. python 常用转义字符对照表 键盘各键对应的ASCII码值
  8. 苹果地图副总裁_苹果高管动荡:两员大将水火不容 “地图门”是引爆点
  9. 手把手教你写JQuery之添加一些方法 5
  10. vjdesign - vue 界面可视化设计器