准备工作

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定位到城市的输入框 粘贴刚刚复制的xpath toCity.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)用这个解析 如果直接输出

输出是这样的

去百度 说需要加这样一句语句

#转为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 etree if __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_url

headers = { '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.text

text = 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爬取去哪儿网信息

本文地址:https://blog.csdn.net/bb123116/article/details/109058975

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

  1. python爬取付费漫画_python selenium爬取kuku漫画

    在爬取这个网站之前,试过爬取其他网站的漫画,但是发现有很多反爬虫的限制,有的图片后面加了动态参数,每秒都会更新,所以前一秒爬取的图片链接到一下秒就会失效了,还有的是图片地址不变,但是访问次数频繁的话会 ...

  2. python爬虫爬取公众号_Python selenium爬取微信公众号文章代码详解

    需求: 想阅读微信公众号历史文章,但是每次找回看得地方不方便. 思路: 1.使用selenium打开微信公众号历史文章,并滚动刷新到最底部,获取到所有历史文章urls. 2.对urls进行遍历访问,并 ...

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

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

  4. python contains类似函数_五步教会你用python爬虫神器PyQuery!(内含详细步骤和代码)...

    前言: 今天为大家带来的内容,是五步教会你用python爬虫神器PyQuery!(内含详细步骤和代码),在这里还是要啰嗦下,为了有更好的观赏性,大部分代码用图片的方式呈现出来!喜欢的话不忘点赞关注不迷 ...

  5. selenium模拟登陆去哪儿网

    序言 在模拟网页的表单登陆的时候,比较头疼的一个问题就是图片验证码的情况,碰到了验证码,比如像普通的文字图片类型的验证码,目前一个比较好的思路就是,通过selenium自身提供的截图功能,对指定的图片 ...

  6. python selenium爬取去哪儿网的酒店信息——详细步骤及代码实现

    目录 准备工作 一.webdriver部分 二.定位到新页面 三.提取酒店信息 ??这里要注意?? 四.输出结果 五.全部代码 准备工作 1.pip install selenium 2.配置浏览器驱 ...

  7. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  8. python爬取微博评论点赞数_Python selenium爬取微博数据代码实例

    爬取某人的微博数据,把某人所有时间段的微博数据都爬下来. 具体思路: 创建driver-–get网页--找到并提取信息-–保存csv--翻页--get网页(开始循环)-----没有"下一页& ...

  9. python爬取微信好友信息_python itchat 爬取微信好友信息

    「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚空 三张图分别是「微信好友头像拼接图」.「性别统计图」.「个性签名统计图」 「微信好友头像拼接图」 「性别统计 ...

最新文章

  1. GoCD 19.2.0 发布,ThoughtWorks 的持续集成引擎
  2. hive解决数据倾斜问题_八种解决 Spark 数据倾斜的方法
  3. [译] 这可能是 2018 年最好的一篇 PHP 性能测评(包含 5.6 到 7.2,以及 HHVM)
  4. 美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养
  5. android 模拟点击 不发出声音,【Android】代码实现模拟屏幕点击和键盘按键事件...
  6. DataGridView加入CheckBox列 (VB)
  7. 在域驱动设计中使用状态模式
  8. stream of java_Java 8 新特性-Stream更优雅的处理集合入门
  9. mysql-5.1.73-8.el6_在centos中安装mysql详细步骤说明
  10. [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
  11. (29)Gulp组合任务
  12. linux脚本grep,linux shell 脚本之深入浅出的grep的用法
  13. Financial Management
  14. 常见的文件后缀名大全
  15. 数据分析全国薪酬分布状况
  16. c语言 lis的nlogn算法,LCS (nlogn)
  17. unity简单实现融合树动画
  18. python 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  19. [附源码]Java计算机毕业设计SSM房屋出租管理系统
  20. java8中的Collectors.groupingBy用法

热门文章

  1. php 自动抢红包机制,xposed自动抢红包的原理,有人来说下么?
  2. CDC(变化数据捕获)同步技术详解
  3. Self Attention 详解
  4. JAVA爬虫三剑客,JAVAWEB三剑客之Filter
  5. 魔兽世界怀旧服服务器维护9-5,[大陆]服务器停机维护版本升级1.9.4
  6. css ie9 打印 hack,IE9下css hack写法
  7. 周末杂想-记一个普通周末
  8. js 时间截取年月日
  9. mangos服务器文件,Mangos Zero服务器搭建简要过程及常见问题(示例代码)
  10. 面试官灵魂拷问:if语句执行完else语句真的不会再执行吗?