一、问题说明

1、selenium库是爬虫过程中比较讨巧的一个第三方库,它能够跳过js、ajax等交互,上手比较容易。

2、基础代码是根据其他博主参考而来,但携程网站不断变化,除ID等不变的信息外,其余都已发生变化,因此,仔细对比之后,改进并编写了以下代码,发布于2021年10月19日。

3、如果出现报错,请尝试修改下面代码中 time.sleep()函数参数。

4、要爬取自己想要的数据,只需修改出发地和到达地以及出发时间,另外注意修改浏览器驱动,本人用的是MicroSoft Edge,驱动到对应的网站下载,下载后要更名驱动并修改 driver_path参数。

4、目前只是一个基础版本,后续可能会发布更新版,如加入直飞、中转、经停等个性化数据爬取。

5、代码只供学习参考,请勿商用!

二、代码

# -*- coding:utf-8 -*-
# 利用selenium爬取携程
# Author: KingStar
import time
from selenium import webdriver
from bs4 import BeautifulSoupdef page_select_function(driver_path):driver = webdriver.Edge(executable_path=driver_path)driver.get('https://www.ctrip.com/')time.sleep(1)# 窗口最大化driver.maximize_window()# 从首页选择进入机票页面input_tag_slect = driver.find_element_by_class_name('s_tab_nocurrent')input_tag_slect.click()time.sleep(1)# 选择日期input_tag_time = driver.find_element_by_id('FD_StartDate')input_tag_time.send_keys('2021-10-20')time.sleep(1)# 选择出发城市input_tag_depart_city = driver.find_element_by_id('FD_StartCity')input_tag_depart_city.send_keys('厦门')time.sleep(1)# 选择到达城市input_tag_arrive_city = driver.find_element_by_id('FD_DestCity')input_tag_arrive_city.send_keys('兰州')time.sleep(1)# 开始搜索input_tag_search = driver.find_element_by_id('FD_StartSearch')# driver.find_element(By.CSS_SELECTOR, "#submit").send_keys(Keys.ENTER)driver.execute_script("arguments[0].click();", input_tag_search)# input_tag_search.click()time.sleep(3)# 关闭紧急公告提示tag_close = driver.find_element_by_class_name('close-icon')tag_close.click()time.sleep(1)# 只选择经停tag_select = driver.find_element_by_class_name('auto_cursor')tag_select.click()time.sleep(2)driver.find_element_by_xpath('//*[@id="domestic_filter_group_trans_and_train__trans_count"]/li[2]/span').click()driver.find_element_by_class_name('flight-part').click()time.sleep(1)'''# 只选择直飞direct_flight_tag_click = driver.find_element_by_class_name('form-label')direct_flight_tag_click.click()time.sleep(2)'''for i in range(1):driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(1)return driverdef data_acquistion(driver):source = driver.page_sourcebs = BeautifulSoup(source, 'html.parser')divs = bs.find_all('div', class_='flight-item domestic')return divsdef data_treating(divs):for div in divs:try:airlineName = div.find('div', class_='airline-name').get_text()flightNumber = div.find_all('span', class_='plane-No')[0].get_text()# craftTypeName = div.find('span', class_='direction_black_border low_text').stringdepartureTime = div.find('div', class_='depart-box').find('div', class_='time').stringarrivalTime = div.find('div', class_='arrive-box').find('div', class_='time').get_text()lowestPrice = div.find('span', class_='price').get_text()print(airlineName, '\t', flightNumber, '\t', departureTime, '\t', arrivalTime, '\t', lowestPrice)time.sleep(1)except:print(无该信息)def main():driver_path = r'C:\MicrosoftWebDriver.exe'driver = page_select_function(driver_path)divs = data_acquistion(driver)data_treating(divs)driver.close()if __name__ == '__main__':main()

python用Selenium爬取携程网机票信息相关推荐

  1. python爬取携程网机票信息

    以下是原创代码哦,虽然并没有详细了解过爬虫,不过还是在不懈的努力(上网,翻书等)下搞定了携程网机票的爬取,回顾历程,往日的心酸真的历历在目,说真的,现在也不懂一些语法到底是怎么个应用法则,但是,这是一 ...

  2. Python爬虫抓取携程网机票信息并发邮件通知

    背景: 由于要买机票,所以一直进行搜索,爬虫可以帮我解决这个问题: 用Python抓取携程网机票信息 过程纪实(上篇) 解释的超级详细. 于是通过这一过程,基本了解了一些: 查询 上海 到 西安 4. ...

  3. layui获取input信息_python爬虫—用selenium爬取京东商品信息

    python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...

  4. [python爬虫] selenium爬取局部动态刷新网站(URL始终固定)

    在爬取网站过程中,通常会遇到局部动态刷新情况,当你点击"下一页"或某一页时,它的数据就进行刷新,但其顶部的URL始终不变.这种局部动态刷新的网站,怎么爬取数据呢?某网站数据显示如下 ...

  5. python爬虫实现爬取网页主页信息(html代码)

    python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...

  6. Python POST 爬虫爬取掘金用户信息

    Python POST 爬虫爬取掘金用户信息 1. 概述 Python第三方库requests提供了两种访问http网页的函数,基于GET方式的get()函数和基于POST方式的post()函数. g ...

  7. python 使用 selenium 爬取中国福利彩票双色球历史中奖号码

    python 使用 selenium 爬取中国福利彩票双色球历史中奖号码 前期准备 版本:python3 模块:selenium.time.pprint 一开始使用的是 tree 的方式获取数据,但发 ...

  8. python使用selenium爬取联想官网驱动(一):获取遍历各驱动的下载网址

    python使用selenium爬取联想官网驱动(一):获取遍历各驱动的下载网址然后wget命令试验下载 由于初期学习,所以先拿一个型号的产品驱动试验. (1)以下为在联想某型号产品获取相关驱动下载的 ...

  9. Python爬虫使用selenium爬取天猫商品信息

    文章目录 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我 ...

  10. 使用Python + selenium爬取51Tracking订单信息

    使用Python + selenium爬取51Tracking国际物流订单信息 --以XDP Express订单为例 一.准备数据 见XDP.xlsx存储内容,示例如: Order code ZWAW ...

最新文章

  1. javascript读取XML文档
  2. 隐马尔可夫HMM中viterbi算法
  3. 捕捉Entity framework 6的详细异常提示
  4. LOJ #6268 分拆数
  5. Linux shell编程学习笔记---第三章
  6. 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)
  7. 游戏开发之.h、.c、.hpp及.cpp的区别
  8. 项目在服务器的绝对路径,项目在云服务器上的绝对路径
  9. 【优化预测】基于matlab粒子群算法优化SVM预测【含Matlab源码 1424期】
  10. 关于冒泡、快排、二分排序算法分析
  11. deb文件如何安装(安装文件管理器)
  12. 【Python】Marshmallow:Python中的“棉花糖”
  13. 数据库中索引原理及填充因子
  14. H5新标签 figcaption 定义图文并茂的html5新标签-figure、figcaption
  15. 清除input numer 点击样式
  16. 【朝花夕拾】Android自定义View篇之(十一)View的滑动,弹性滑动与自定义PagerView...
  17. 什么是RMI,什么是RPC,两者之间的区别是什么?
  18. 如何在海量数据中查找最相似的topk样本
  19. 刷脸设备引进越来越多的人喜欢靠脸消费
  20. 停止服务、重新启动和重新加载服务

热门文章

  1. 马斯克喊话库克:昨天你对我爱答不理,今天我让你高攀不起
  2. 【关于NAT64的实现】
  3. MSET key value [key value ...]
  4. HTML表单基本结构
  5. 【mysql】查询本月和去年同期数据SQL
  6. vocabulary
  7. 记一款价廉物美的小型DAC+耳放----Dr.DAC
  8. python读写excel文件(xls格式)
  9. python如何设置画布开始位置_Python用Turtle绘图,原来如此简单
  10. vscode配置代理