python+selenium 爬携程机票价格
自己留着用的一个小工具
出发地目的地在url变量里
#!/usr/bin/env python
#encoding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def print_prices():
flights = driver.find_elements_by_class_name("Label_Flight")
for flight in flights:
fli_No = flight.find_element_by_class_name("logo").find_element_by_class_name("flight_logo").text
start_end_time = flight.find_elements_by_class_name("time_box")
price = flight.find_element_by_class_name("base_price02").text
print("\t" + fli_No + "\t" + start_end_time[0].text + "--" + start_end_time[1].text + "\t" + price)
#hfe-ckg 就是出发地目的地
url1 = "http://flights.ctrip.com/itinerary/oneway/hfe-ckg?allianceid=4897&date="
url2 = "&portingToken=6d8f1831fbba474ca26679ed189651de&sid=155952"
chromeDriverPath = '/Users/vanues/Downloads/chromedriver'
driverOption = Options()
driverOption.add_argument('headless')
driverOption.add_argument('--no-sandbox')
driverOption.add_argument('--disable-dev-shm-usage')
driverOption.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
driverOption.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
dates = ['2019-01-15','2019-01-16','2019-01-17','2019-01-18','2019-01-19','2019-01-20','2019-01-21','2019-01-22','2019-01-23','2019-01-24','2019-01-25']
driver = webdriver.Chrome(executable_path=chromeDriverPath, chrome_options=driverOption)
for date in dates:
ctrip_url = url1 + date + url2
driver.get(ctrip_url)
print(date)
print_prices()
driver.close()
print("更新时间:"+str(time.localtime().tm_mon)+'月'+str(time.localtime().tm_mday)+'日'+str(time.localtime().tm_hour)+":"+str(time.localtime().tm_min)+':'+str(time.localtime().tm_sec))
print('=======================================================')
f = open('TicketPrice.txt', 'a+', encoding='utf-8')
f.write("更新时间:"+str(time.localtime().tm_mon)+'月'+str(time.localtime().tm_mday)+'日'+str(time.localtime().tm_hour)+":"+str(time.localtime().tm_min)+':'+str(time.localtime().tm_sec) + '\n')
f.write('======================================================='+'\n')
f.close()