admin管理员组

文章数量:1558087

import time
import requests
from parsel import Selector
headers={
'authority':'flight.qunar',
'method':'GET',
'path':'/touch/api/domestic/wbdflightlist?departureCity=%E5%8C%97%E4%BA%AC&arrivalCity=%E4%B8%8A%E6%B5%B7&departureDate=2021-02-07&ex_track=&__m__=6d243e501dc78217a81fb00128f164be&st=1612620742801&sort=&_v=4',       
'scheme':'https',
'accept':'text/javascript,text/html,application/xml,text/xml,*/*',
'accept-encoding':'gzip,deflate,br',
'accept-language':'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'content-type':'application/x-www-form-urlencoded',
'cookie':'QN1=00001380306c2ea6d2681537;QN300=auto_4e0d874a;QN99=1223;QN601=7dada8cf578c76d9aa04c4f3b3eb5888;_i=DFiEZnC6oVNlnlFw-3Ek3JvqB76w;quinn=620ee7756997c1c1097141c0508f27a9b2e542164a8443466e207099de4cb680f6c336e23637646f509f16f874a49a96;QN269=0C21A5E2685611EBA02AFA163E3CAEF7;fid=3aba8c2f-7c4f-43c2-9ffa-3057504b95ed;QN48=7e2fd4e1-d7d6-4218-8fc8-4156d77b9c6f;F235=1612600716281;QN205=organic;QN277=organic;SplitEnv=D;Alina=87916e82-14da76-27462579-209b0707-4896601e55a0;QN170=183.38.142.60_a6f38f_0_dple5cGfqWaw6YkQTwsGzFdioG9LwlNNk94gPAxaAic%3D;QN66=qunar;SC1=1b5b2392d5189b703df4f1d97edac4b9;SC18=;QN42=lingyuncelia;_q=U.lywteiu5813;_t=26986125;csrfToken=ugrfBdIk4HIty5oXPRkbagdwiR0oSjWe;_s=s_ZYU3LUWN6TJPLHS2ZB4VCMQUKU;_v=DLWufV8SjPT5pxJymnrqYdjlrk1_-2DzvytchY-Z-KiM4_AM4jbycYFNfDzTJUOMrGOu6UwAW8rRRdkolY5fg4gA96aTmumOBlHZV_L1gea2_e0pd_hYz5qJoPLpW6oRuONQWw-uyCDpRGr-0j22XZJt0Styj5mlAqKA5BDrh2V0;QN621=1490067914133%3DDEFAULT%26fr%3Dflight_dom_search;QN44=lywteiu5813;_vi=4V_7S7kPGDGPYVGftqs8eIPVLzB2TqVxTZ75zWGHW_c0Hdj4T0ZFygdAXL7ZYlhsUG7yhRbGYiwfHRZMa5bI-NpHgEbBNeh7QJ0W2OIqw0Ji2Q2aRAvLrbC2vAO5houp1stAtNoLRGt8pd6rPRccMwu_X1bIZWrSfFsNWrHjsk3T;QunarGlobal=10.90.57.255_64d39c66_17776ca2979_-6bef%7C1612619868391;QN667=B;QN668=51%2C56%2C51%2C52%2C56%2C52%2C50%2C50%2C54%2C53%2C56%2C55%2C59;QN271=dc6f89e7-aa08-4897-9e31-7e550590c676;RT="z=1&dm=flight.qunar&si=4bc80e90-f497-4136-b129-add88b5a747b&ss=kktq7etr&sl=c&tt=1fx6&bcn=%2F%2F684fc53b.akstat.io%2F&ul=2jp63&hd=2jpjx";QN267=907897956ab724e02',  
'csht':'',
'd4528f':'147a7684aa2d849d68851c7238f70e50b40478ac',
'pre':'918ce8f0-b83d26-404a5782-73841725-41494602bc0f',
'referer':'https://flight.qunar/site/oneway_list.htm?searchDepartureAirport=%E5%8C%97%E4%BA%AC&searchArrivalAirport=%E4%B8%8A%E6%B5%B7&searchDepartureTime=2021-02-07&searchArrivalTime=2021-02-09&nextNDays=0&startSearch=true&fromCode=BJS&toCode=SHA&from=flight_dom_search&lowestPrice=null',
'sec-fetch-dest':'empty',
'sec-fetch-mode':'cors',
'sec-fetch-site':'same-origin',
'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/88.0.4324.150Safari/537.36Edg/88.0.705.63',
'w':'0',
'x-requested-with':'XMLHttpRequest',
}
url="https://flight.qunar/touch/api/domestic/wbdflightlist?departureCity=%E5%8C%97%E4%BA%AC&arrivalCity=%E4%B8%8A%E6%B5%B7&departureDate=2021-02-07&ex_track=&__m__=6d243e501dc78217a81fb00128f164be&st=1612620742801&sort=&_v=4"
res=requests.get(url,headers=headers)
# print(res.status_code)
a=res.json() 
# print(a)
for i in range(0,18):
    b=a['data']['flights'][i]['binfo']
    print(b['name'])
    print(b['airCode'])
    print(b['planeFullType'])
    print(b['depTime'])
    print(b['depAirport'])
    print(b['depTerminal'])
    print(b['flightTime'])
    print(b['arrTime'])
    print(b['arrAirport'])
    print(b['arrTerminal'])
    print(a['data']['flights'][i]['discountStr'])
    print(a['data']['flights'][i]['minPrice'])
    print("****************************")

利用selenium,提取页面源代码

import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('Chrome/88.0.4324.150')
driver = Chrome('K:/zhusc/chromedriver.exe', options=chrome_options)
with open('K:/zhusc/stealth.min.js') as f:
    js = f.read()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": js
})
def wait_for_you(myDynamicElement):    
    try:
    #查看10秒内是否出现该元素,如果元素10秒内出现就返回,否则抛出异常。
        element=WebDriverWait(driver,10).until(
            EC.presence_of_element_located((By.XPATH,myDynamicElement))
        )
    finally:        
        driver.find_element_by_xpath(myDynamicElement).click()
def inputme(s,r):    #记事本,输入内容
    f=open(r,'a+',encoding="utf-8")
    f.writelines(s)
    f.write('\n')
url="http://flight.qunar/site/oneway_list.htm?searchDepartureAirport=%E5%8C%97%E4%BA%AC&searchArrivalAirport=%E4%B8%8A%E6%B5%B7&searchDepartureTime=2021-02-12&searchArrivalTime=&nextNDays=0&startSearch=true&fromCode=BJS&toCode=SHA&from=flight_dom_search&lowestPrice=null"
driver.get(url)
driver.maximize_window() #窗口最大化
wait_for_you('//*[@id="QunarPopBoxptlogin"]')#账号登录
#请输入用户名
driver.find_element_by_xpath('//*[@id="QunarPopBox"]/div/div[3]/div[2]/form/div[2]/div/input').send_keys('账号')
time.sleep(1)
driver.find_element_by_xpath('//*[@id="QunarPopBox"]/div/div[3]/div[2]/form/div[5]/div/input').send_keys('密码')#请输入密码
time.sleep(1)
driver.find_element_by_xpath('//*[@id="QunarPopBox"]/div/div[3]/div[2]/form/div[6]/label').click()#点击验证码输入框准备输入
a=""
while len(a)!=4:    #当验证码输入至第4位时
    a=driver.find_element_by_xpath('//*[@id="QunarPopBox"]/div/div[3]/div[2]/form/div[6]/div/input').get_attribute('value')#获取验证码输入框内容
driver.find_element_by_xpath('//*[@id="QunarPopBox"]/div/div[3]/div[2]/form/div[12]/button').click()#登录

myDynamicElement='//*[@id="slide_block"]'#定位滑块
try:
#查看10秒内是否出现该元素,如果元素10秒内出现就返回,否则抛出异常。
    element=WebDriverWait(driver,10).until(
        EC.presence_of_element_located((By.XPATH,myDynamicElement))
    )
    hover=driver.find_element_by_xpath('//*[@id="slide_block"]')
    action=webdriver.ActionChains(driver)
    action.click_and_hold(hover).perform()
    action.move_by_offset(260,0)
    action.release().perform()
except:
    pass           
#提取源代码    
myDynamicElement='//*[@id="content"]/div/div[4]/div[3]/div/div/div[1]/div/div[1]/div/div[1]/div/div[1]/span'
try:
#查看10秒内是否出现该元素,如果元素10秒内出现就返回,否则抛出异常。
    element=WebDriverWait(driver,360).until(
        EC.presence_of_element_located((By.XPATH,myDynamicElement))
    )
finally:        
    a=driver.page_source
    print(a)
    inputme(a,'k:/zhusc/1.txt')

本文标签: 去哪儿网机