From 2852f4ee5e89c5a8ddbf2a176f5010e26b68cefc Mon Sep 17 00:00:00 2001 From: hnu202109060208 Date: Sun, 4 Dec 2022 18:05:43 +0800 Subject: [PATCH] ADD file via upload --- 携程爬取飞机航班号.py | 128 +++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 携程爬取飞机航班号.py diff --git a/携程爬取飞机航班号.py b/携程爬取飞机航班号.py new file mode 100644 index 0000000..ab41cfe --- /dev/null +++ b/携程爬取飞机航班号.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Nov 23 07:56:38 2022 + +@author: DELL +""" + +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +chrome_options = Options() +chrome_options.add_argument('--no-sandbox') +chrome_options.add_argument('--headless') +from selenium.webdriver.common.by import By +from selenium.webdriver.support.wait import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +import datetime +import csv + + +chrome_options.add_argument('window-size=1920,1080') +driver = webdriver.Chrome(executable_path=r'chromedriver', options=chrome_options) +#b.get('https://www.baidu.com') +Myflights=[] + +city = { + '阿勒泰': 'AAT', '阿克苏': 'AKU', '鞍山': 'AOG', '安庆': 'AQG', '安顺': 'AVA', '阿拉善左旗': 'AXF', '澳门': 'MFM', '阿里': 'NGQ', + '阿拉善右旗': 'RHT', '阿尔山': 'YIE', '巴中': 'BZX', '百色': 'AEB', '包头': 'BAV', '毕节': 'BFJ', '北海': 'BHY', '北京': 'BJS', + '北京(南苑机场)': 'NAY', '北京(首都国际机场)': 'PEK', '博乐': 'BPL', '保山': 'BSD', '白城': 'DBC', '布尔津': 'KJI', '白山': 'NBS', + '巴彦淖尔': 'RLK', '昌都': 'BPX', '承德': 'CDE', '常德': 'CGD', '长春': 'CGQ', '朝阳': 'CHG', '赤峰': 'CIF', '长治': 'CIH', + '重庆': 'CKG', '长沙': 'CSX', '成都': 'CTU', '沧源': 'CWJ', '常州': 'CZX', '池州': 'JUH', '潮州': 'SWA', '潮汕': 'SWA', + '大同': 'DAT', '达县': 'DAX', '达州': 'DAX', '稻城': 'DCY', '丹东': 'DDG', '迪庆': 'DIG', '大连': 'DLC', '大理': 'DLU', + '敦煌': 'DNH', '东营': 'DOY', '大庆': 'DQA', '德令哈': 'HXD', '德宏': 'LUM', '鄂尔多斯': 'DSN', '额济纳旗': 'EJN', '恩施': 'ENH', + '二连浩特': 'ERL', '福州': 'FOC', '阜阳': 'FUG', '抚远': 'FYJ', '富蕴': 'FYN', + '广州': 'CAN', '果洛': 'GMQ', '格尔木': 'GOQ', '广元': 'GYS', '固原': 'GYU', '高雄': 'KHH', '赣州': 'KOW', '贵阳': 'KWE', + '桂林': 'KWL', '红原': 'AHJ', '海口': 'HAK', '河池': 'HCJ', '邯郸': 'HDG', '黑河': 'HEK', '呼和浩特': 'HET', '合肥': 'HFE', + '杭州': 'HGH', '淮安': 'HIA', '怀化': 'HJJ', '海拉尔': 'HLD', '哈密': 'HMI', '衡阳': 'HNY', '哈尔滨': 'HRB', '和田': 'HTN', + '花土沟': 'HTT', '花莲': 'HUN', '霍林郭勒': 'HUO', '惠阳': 'HUZ', '惠州': 'HUZ', '汉中': 'HZG', '黄山': 'TXN', '呼伦贝尔': 'XRQ', + '嘉义': 'CYI', '景德镇': 'JDZ', '加格达奇': 'JGD', '嘉峪关': 'JGN', '井冈山': 'JGS', '景洪': 'JHG', '金昌': 'JIC', '九江': 'JIU', + '晋江': 'JJN', '荆门': 'JM1', '佳木斯': 'JMU', '济宁': 'JNG', '锦州': 'JNZ', '建三江': 'JSJ', '鸡西': 'JXA', '九寨沟': 'JZH', + '金门': 'KNH', '揭阳': 'SWA', '济南': 'TNA', + '库车': 'KCA', '康定': 'KGT', '喀什': 'KHG', '凯里': 'KJH', '昆明': 'KMG', '库尔勒': 'KRL', '克拉玛依': 'KRY', '黎平': 'HZH', + '澜沧': 'JMJ', '连城': 'LCX', '龙岩': 'LCX', '临汾': 'LFQ', '兰州': 'LHW', '丽江': 'LJG', '荔波': 'LLB', '吕梁': 'LLV', + '临沧': 'LNJ', '陇南': 'LNL', '六盘水': 'LPF', '拉萨': 'LXA', '洛阳': 'LYA', '连云港': 'LYG', '临沂': 'LYI', '柳州': 'LZH', + '泸州': 'LZO', '林芝': 'LZY', '芒市': 'LUM', '牡丹江': 'MDG', '马祖': 'MFK', '绵阳': 'MIG', '梅县': 'MXZ', '梅州': 'MXZ', + '马公': 'MZG', '满洲里': 'NZH', '漠河': 'OHE', '南昌': 'KHN', '南竿': 'LZN', '南充': 'NAO', '宁波': 'NGB', '南京': 'NKG', + '宁蒗': 'NLH', '南宁': 'NNG', '南阳': 'NNY', '南通': 'NTG', + '澎湖列岛': 'MZG', '攀枝花': 'PZI', '普洱': 'SYM', '琼海': 'BAR', '秦皇岛': 'BPE', '祁连': 'HBQ', '且末': 'IQM', '庆阳': 'IQN', + '黔江': 'JIQ', '泉州': 'JJN', '衢州': 'JUZ', '齐齐哈尔': 'NDG', '青岛': 'TAO', '日照': 'RIZ', '日喀则': 'RKZ', '若羌': 'RQA', + '神农架': 'HPG', '石狮': 'JJN', '莎车': 'QSZ', '上海': 'SHA', '上海(浦东国际机场)': 'PVG', '上海(虹桥国际机场)': 'SHA', '沈阳': 'SHE', + '石河子': 'SHF', '石家庄': 'SJW', '上饶': 'SQD', '三明': 'SQJ', '汕头': 'SWA', '三亚': 'SYX', '深圳': 'SZX', '十堰': 'WDS', + '邵阳': 'WGN', '松原': 'YSQ', '台州': 'HYN', '台中': 'RMQ', '塔城': 'TCG', '腾冲': 'TCZ', '铜仁': 'TEN', '通辽': 'TGO', + '天水': 'THQ', '吐鲁番': 'TLQ', '通化': 'TNH', '台南': 'TNN', '台北': 'TPE', '天津': 'TSN', '台东': 'TTT', '唐山': 'TVS', + '太原': 'TYN', '泰州': 'YTY', '五大连池': 'DTU', '乌兰浩特': 'HLH', '乌兰察布': 'UCB', '乌鲁木齐': 'URC', '潍坊': 'WEF', '威海': 'WEH', + '文山': 'WNH', '温州': 'WNZ', '乌海': 'WUA', '武汉': 'WUH', '武夷山': 'WUS', '无锡': 'WUX', '梧州': 'WUZ', '万州': 'WXN', + '乌拉特中旗': 'WZQ', + '兴义': 'ACX', '香格里拉': 'DIG', '夏河': 'GXH', '香港': 'HKG', '西双版纳': 'JHG', '新源': 'NLT', '西安': 'SIA', '咸阳': 'SIA', + '忻州': 'WUT', '信阳': 'XAI', '襄阳': 'XFN', '西昌': 'XIC', '锡林浩特': 'XIL', '厦门': 'XMN', '西宁': 'XNN', '徐州': 'XUZ', + '延安': 'ENY', '银川': 'INC', '伊春': 'LDS', '永州': 'LLF', '榆林': 'UYN', '宜宾': 'YBP', '运城': 'YCU', '宜春': 'YIC', + '宜昌': 'YIH', '伊犁': 'YIN', '伊宁': 'YIN', '义乌': 'YIW', '营口': 'YKH', '延吉': 'YNJ', '烟台': 'YNT', '盐城': 'YNZ', + '扬州': 'YTY', '玉树': 'YUS', '岳阳': 'YYA', '郑州': 'CGO', '张家界': 'DYG', '芷江': 'HJJ', '舟山': 'HSN', '扎兰屯': 'NZL', + '张掖': 'YZY', '昭通': 'ZAT', '湛江': 'ZHA', '中卫': 'ZHY', '张家口': 'ZQZ', '珠海': 'ZUH', '遵义': 'ZYI', +} + +with open('information.txt','r',encoding='utf-8') as fe: + info=fe.read() + lst=info.split(' ') + date1 = datetime.datetime.strptime(lst[2],"%Y-%m-%d") + date2 = date1 + datetime.timedelta(days=int(lst[3])) +try: + date = datetime.datetime.strptime(str(date1)[0:10],"%Y-%m-%d") + for mm in range(int(lst[3])): + #date = datetime.datetime.strptime("2022-11-27","%Y-%m-%d") + url ="https://flights.ctrip.com/online/list/oneway-"+city[lst[0]]+"-"+city[lst[1]]+"?_=1&depdate=" + str(date).split(" ")[0] + #url = "https://flights.ctrip.com/online/list/oneway-CSX-NKG?_=1&depdate=" + str(date).split(" ")[0] + driver.get(url) + #driver.get("https://flights.ctrip.com/online/list/oneway-CSX-NKG?_=1&depdate=2022-11-23") + WebDriverWait(driver, 10, 0.5).until( + EC.presence_of_element_located((By.CLASS_NAME, "plane-No")) + ) + js = "return document.body.scrollHeight" + new_height = driver.execute_script(js) + for i in range(0, new_height, 350): + driver.execute_script('window.scrollTo(0, %s)' % i) + flights = driver.find_elements(By.CLASS_NAME,"plane-No") + #flights = [x.text[:6] for x in flights] + flightnames=[] + for x in flights: + flightnames.append(x.text) + while '' in flightnames: + flightnames.remove('') + #print(flightnames) + + flightDate = [url.split("=")[-1] for x in range(len(flights))] + + depTime = driver.find_elements(By.XPATH,r'//div[@class="depart-box"]/div[@class="time"]') + departTime=[] + for x in depTime: + departTime.append(x.text) + while '' in departTime: + departTime.remove('') + + ArrTime = driver.find_elements(By.XPATH,r'//div[@class="arrive-box"]/div[@class="time"]') + arriveTime=[] + for x in ArrTime: + arriveTime.append(x.text) + while '' in arriveTime: + arriveTime.remove('') + + prices = driver.find_elements(By.XPATH,r'//span[@class="price"]') + pricess=[] + for x in prices: + pricess.append(x.text.replace("¥", "")) + while '' in pricess: + pricess.remove('') + Myflight=list(zip(flightDate,flightnames,departTime,arriveTime,pricess)) + Myflights.extend(Myflight) + date = date + datetime.timedelta(days=1) + driver.quit() +except: + driver.quit() +with open("contentt.csv", "w") as f: + w = csv.writer(f) + w.writerows(Myflights) +print('Done') + + + +