from selenium import webdriver
import time
driver=webdriver.Edge(r"D:\dmh\tools\driver\msedgedriver.exe")
driver.maximize_window()
driver.implicitly_wait(10)
#打开网页
driver.get("https://www.jd.com/")
driver.find_element_by_xpath('//a[@href="//hotel.jd.com/"]').click()
time.sleep(3)
#因进入酒店模块,新打开标签页,则需先切换页面
driver.switch_to_window(driver.window_handles[-1])#返回列表
#页面被遮挡时,是不能进行元素定位的
#选择城市,需先定位城市,清除原默认城市,再输入
city=driver.find_element_by_id('city')
#清除原默认城市
city.clear()
#输入内容
city.send_keys("西安")
#因有下拉枚举值,比较多,需要强制等待,再选择
time.sleep(3)
#控制台设置时间冻结 setTimeout(function(){debugger},5000)
#选择西安 陕西
driver.find_element_by_xpath('//li[@data-val="西安,西安,陕西"]')
time.sleep(3)
#选择入住时间,先点击,才能有日期的选择窗口
driver.find_element_by_id('dateStart').click()
time.sleep(3)
driver.find_element_by_xpath('//div[@class="ui-jm-calendar ui-calendar-3"]//table[@data-index="1"]/tbody/tr[2]/td[5]').click()
time.sleep(3)
#选择离店日期
driver.find_element_by_xpath('//div[@class="ui-jm-calendar ui-calendar-4"]//table[@data-index="1"]/tbody/tr[2]/td[6]').click()
#选择商圈
hotel=driver.find_element_by_id("hotelKeys")
#输入
hotel.send_keys("钟楼")
#下拉枚举选择
driver.find_element_by_xpath('//li[@data-val="钟楼"]').click()
time.sleep(3)
#点击搜索酒店
driver.find_element_by_id('searchBtn').click()
爬虫酒店思路:
1、导入相关类,选定相应浏览器驱动
2、窗口最大化
3、窗口隐式等待
4、打开京东商城地址
5、进入左边菜单选项,选择【酒店】模块,注意点击酒店,跳转新标签,需进行页面切换:
driver.switch_to_window(driver.window_handles[-1])
6、针对城市、日期、商圈依次定位,注意输入文本信息时,含多个枚举值时,页面需在控制台先冻结一下,再进行下一步抓取元素
setTimeout(function(){debugger},5000)
7、选择日期定位稍微复杂点,我踩了蛮多的坑,宝子们有更加优化的方法不