爬虫实战篇—12306抢票爬虫 – 疾风_lu

0

(1)、序论

(就是这样法典在我测后来地很强。)适用型)每逢佳节,当你回家买票的时分,你令人头痛的事吗?现在时的我找到了就是这样,经过总有一天的仿真,与你剖析,权力可以径直导致停止12306抢票,它也可以被最佳化。,像和谐公正地抢门票。,如此云云。法典首要运用仿照浏览次调式,不运用剖析次。。

(2)、技术旅程的

selenium + chromedriver

(3)、思绪剖析

1、仿照浏览次登录票超过连接,人工控制登录

2、登录后,让浏览次略过到票务接口。

3、人工控制输出动身地皮。、目的、 动身日,完成或结束是你这么说的嘛!三项书信输出。,决定方向查询用纽扣装饰,停止列车游览查询

4、找到我们的必要的教育。,看一眼假设有一张前文的票。,找到教育号码的安排用纽扣装饰。,停止点击,假设不注意是你这么说的嘛!两种位置,圈查询

5、一旦反省,有一张票。,单击事变以器械安排用纽扣装饰,查找旅客书信,器械单击事变,再次找到针对定单用纽扣装饰。,器械单击事变

6、单击针对定单用纽扣装饰,将敲击身份证明对话框。,查找身份证明用纽扣装饰,器械单击事变,抢票

7、后来地,支付完成或结束。

(4)、整个法典

  1#author: "xian"  2#date: 2018/6/9  3#运用Selp不独占的事物登录书信(Cookie)  4from selenium import webdriver
  5from selenium.webdriver.support.ui import WebDriverWait
  6from selenium.webdriver.support import expected_conditions as EC #期待要求  7from selenium.webdriver.common.by import By
  8  9 10 11class Qiangpiao(object):
 12#设定初值有或起作用 13def__init__(自我意识)
 14          = '''' 15          = '''' 16          = '''' 17          = '''' 18         self.driver = webdriver.Chrome() #原动力Chrome浏览次调整 19 20def wait_input(自我意识)
 21          = input(''动身地:'')
 22          = input(''目的:'')
 23#时期体式不可避免的是对应的。 24          = input(''动身时期:'')
 25#该称号不可避免的存位于通常的使接触当中。 26         self.passengers = input(''旅客姓名:(如有多个旅客运用英文逗号切割)'').split('','')
 27         self.trains = input(''车次:(如有多个车次运用英文逗号切割)'').split('','') #结出果实[G234,...] 28 29#登录只想在教室上电话联络。 30def _login(自我意识)
 31         self.driver.get() #吐艳登录接口 32#显示延缓(解说):你和你的爱好者职务。,假设延缓或延缓延缓的要求是发作的。 33#隐式延缓(解说):你和你的爱好者职务。,延缓时期作为要求) 34         WebDriverWait().until(())
 35print(''祝词您,您已成登录。!'')
 36 37 38def _order_ticket(自我意识)
 39#1、跳到反省票的接口。 40        self.driver.get()
 41#2、延缓右边的恭敬进入右边。 42         WebDriverWait(self.driver ,1000)直到,"fromStationText"),))
 43#3、延缓目的右边输出。 44         WebDriverWait(self.driver, 1000)直到,"toStationText"),))
 45#4、延缓动身日期右边输出。 46         WebDriverWait(self.driver, 1000)直到,"train_date"),))
 47#5、延缓查询用纽扣装饰用于加强语气。 48         WebDriverWait(self.driver, 1000)直到, "query_ticket")))
 49#6、假设可以点击决定方向查询用纽扣装饰器械单击事变 50         searchBotton = ("query_ticket")
 51        searchBotton.click()
 52#7、单击查询用纽扣装饰后,延缓票务书信页 53         WebDriverWait(self.driver, 1000)直到,".//tbody[@id = ''queryLeftTable'']/tr")))
 54#8、查找不注意TATATRAN属性的拥有TR贴标签于。 55         tr_list = (".//tbody[@id =''queryLeftTable'']/tr[not(@datatran)]")
 56#9、遍历遵守要求的拥有TR贴标签于 57for tr in tr_list:
 58             train_number = (''number'').text
 59if train_number in self.trains:
 60                 left_ticket = tr.find_element_by_xpath(''TD〔3〕'').text #在月的第四日TD贴标签于下找到发短信。 61if left_ticket == ''''or left_ticket.isdigit: #决定列车号假设在列表中。 62                     orderBotton = (''btn72'')
 63                    orderBotton.click()
 64 65#延缓抵达身份证明页表 66                     WebDriverWait(self.driver, 1000).until(())
 67#延缓拥有旅客书信被工作量。 68                     WebDriverWait(self.driver, 1000)直到,"UL = ''normal_passenger_id'']/li")))
 69#获取旅客书信 70                     passanger_labels = ("UL = ''normal_passenger_id'']/li/label")
 71for passanger_label in passanger_labels: #遍历拥有贴标签于贴标签于 72                         name = passanger_label.text
 73if name in self.passengers:#决定称号假设与后面输出的称号划一。 74                             passanger_label.click() #器械点击调整 75 76#获取用纽扣装饰针对定单 77                             submitBotton = (''submitOrder_id'')
 78                            submitBotton.click()
 79#显示延缓次对话框假设涌现。 80                             WebDriverWait(self.driver, 1000)直到,''dhtmlx_wins_body_outer'')))
 81#显示假设重读延缓身份证明用纽扣装饰。,器械后单击单击。 82                             WebDriverWait(self.driver, 1000)直到,''qr_submit_id'')))
 83                             ConBotton = (''qr_submit_id'')
 84                            ConBotton.click()
 85while ConBotton:
 86                                ConBotton.click()
 87                                 ConBotton = (''qr_submit_id'')
 88 89return 90 91 92 93 94 95 96 97 98def run(自我意识)
 99        self.wait_input()
100        self._login()
101        self._order_ticket()
102103if__name__ == ''__main__'':
104     spider = Qiangpiao()
105     spider.run()

(5)、运转效果图

后来地,我们的只需在30分钟内完成或结束网上支付。,附近的适用!

(6)、运用说明

请运用前确保已成立好东西python编纂者并完成或结束pyhon的划拨的款项windows下引荐运用pycharm,并下载Chrome和Chrome原动力次。,并将chromedriver划拨的款项进python包(假设没划拨的款项供给明确提出手段和财力亦可!)

稿件法典按命令行准时的调整那就够了抢票

LEAVE A REPLY