python用Selenium爬取携程网机票信息
一、问题说明
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爬取携程网机票信息相关推荐
- python爬取携程网机票信息
以下是原创代码哦,虽然并没有详细了解过爬虫,不过还是在不懈的努力(上网,翻书等)下搞定了携程网机票的爬取,回顾历程,往日的心酸真的历历在目,说真的,现在也不懂一些语法到底是怎么个应用法则,但是,这是一 ...
- Python爬虫抓取携程网机票信息并发邮件通知
背景: 由于要买机票,所以一直进行搜索,爬虫可以帮我解决这个问题: 用Python抓取携程网机票信息 过程纪实(上篇) 解释的超级详细. 于是通过这一过程,基本了解了一些: 查询 上海 到 西安 4. ...
- layui获取input信息_python爬虫—用selenium爬取京东商品信息
python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...
- [python爬虫] selenium爬取局部动态刷新网站(URL始终固定)
在爬取网站过程中,通常会遇到局部动态刷新情况,当你点击"下一页"或某一页时,它的数据就进行刷新,但其顶部的URL始终不变.这种局部动态刷新的网站,怎么爬取数据呢?某网站数据显示如下 ...
- python爬虫实现爬取网页主页信息(html代码)
python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...
- Python POST 爬虫爬取掘金用户信息
Python POST 爬虫爬取掘金用户信息 1. 概述 Python第三方库requests提供了两种访问http网页的函数,基于GET方式的get()函数和基于POST方式的post()函数. g ...
- python 使用 selenium 爬取中国福利彩票双色球历史中奖号码
python 使用 selenium 爬取中国福利彩票双色球历史中奖号码 前期准备 版本:python3 模块:selenium.time.pprint 一开始使用的是 tree 的方式获取数据,但发 ...
- python使用selenium爬取联想官网驱动(一):获取遍历各驱动的下载网址
python使用selenium爬取联想官网驱动(一):获取遍历各驱动的下载网址然后wget命令试验下载 由于初期学习,所以先拿一个型号的产品驱动试验. (1)以下为在联想某型号产品获取相关驱动下载的 ...
- Python爬虫使用selenium爬取天猫商品信息
文章目录 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我 ...
- 使用Python + selenium爬取51Tracking订单信息
使用Python + selenium爬取51Tracking国际物流订单信息 --以XDP Express订单为例 一.准备数据 见XDP.xlsx存储内容,示例如: Order code ZWAW ...
最新文章
- javascript读取XML文档
- 隐马尔可夫HMM中viterbi算法
- 捕捉Entity framework 6的详细异常提示
- LOJ #6268 分拆数
- Linux shell编程学习笔记---第三章
- 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)
- 游戏开发之.h、.c、.hpp及.cpp的区别
- 项目在服务器的绝对路径,项目在云服务器上的绝对路径
- 【优化预测】基于matlab粒子群算法优化SVM预测【含Matlab源码 1424期】
- 关于冒泡、快排、二分排序算法分析
- deb文件如何安装(安装文件管理器)
- 【Python】Marshmallow:Python中的“棉花糖”
- 数据库中索引原理及填充因子
- H5新标签 figcaption 定义图文并茂的html5新标签-figure、figcaption
- 清除input numer 点击样式
- 【朝花夕拾】Android自定义View篇之(十一)View的滑动,弹性滑动与自定义PagerView...
- 什么是RMI,什么是RPC,两者之间的区别是什么?
- 如何在海量数据中查找最相似的topk样本
- 刷脸设备引进越来越多的人喜欢靠脸消费
- 停止服务、重新启动和重新加载服务