午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    python實(shí)現(xiàn)的一個(gè)火車票轉(zhuǎn)讓信息采集器
    來源:易賢網(wǎng) 閱讀:934 次 日期:2016-06-22 10:33:05
    溫馨提示:易賢網(wǎng)小編為您整理了“python實(shí)現(xiàn)的一個(gè)火車票轉(zhuǎn)讓信息采集器”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了python實(shí)現(xiàn)的一個(gè)火車票轉(zhuǎn)讓信息采集器,采集信息來源是58同程或者趕集網(wǎng),需要的朋友可以參考下。

    #coding: utf-8

    '''

    春運(yùn)查詢火車票轉(zhuǎn)讓信息

    author: piglei2007@gmail.com

    date: 2011.01.25

    '''

    import re

    import os

    import time

    import urlparse

    import datetime

    import traceback

    import urllib2

    import socket

    socket.setdefaulttimeout(20)

    blank_re = re.compile(r\s+)

    opener = urllib2.build_opener(urllib2.httpcookieprocessor())

    opener.addheaders = [

      (user-agent, mozilla/5.0 (x11; u; freebsd i386; en-us; rv:1.9.1) gecko/20090704 firefox/3.5),

      (accept, */*),

    ]

    urllib2.install_opener(opener)

    from beautifulsoup import beautifulsoup

    source = {

      58: http://bj.58.com/huochepiao/?num=%(train)s&starttime=%(date)s00,

      ganji: http://bj.ganji.com/piao/cc_%(train)s/%(date)s/,

    }

    record_file = /tmp/ticket_records.txt

    def parse_record():

      try:

        return set([x.strip() for x in open(record_file, r).readlines()])

      except ioerror:

        open(record_file, w)

        return set()

    def flush_record(records):

      open(record_file, w).write(\n.join(records))

    def main(config):

      開始抓取

      existed = parse_record()

      to_email = []

      for train in config[trains]:

        for date in config[dates]:

          for type, _url in source.items():

            url = _url % dict(train=train, date=date)

            content = urllib2.urlopen(url).read()

            soup = beautifulsoup(content)

            result = parse_content(type, soup, train)

            for url, text in result:

              url = urlparse.urljoin(_url, url)

              # 只要臥鋪!

              if url not in existed and u臥 in text:

                to_email.append([text, url])

              existed.add(url)

      if to_email:

        content = .join(

          [x for x in [ | .join(y) for y in to_email]]

        ).encode(utf-8)

        simple_mail(config[people], content)

      flush_record(existed)

    def parse_content(type, soup, train):

      獲得車次信息

      result = []

      if type == 58:

        info_table = soup.find(table, id=infolist)

        if info_table:

          for x in info_table.findall(tr, text=re.compile(ur%s(?!時(shí)刻表) % train, re.i)):

            a = x.parent

            _text = blank_re.sub(, a.text)

            result.append([a[href], _text])

      if type == ganji:

        for x in soup.findall(dl, {class: list_piao}):

          a = x.dt.a

          result.append([a[href], a.text])

      return result

    email_host = 'smtp.sohu.com'

    email_host_user = 'yourname@sohu.com'

    email_host_password = 'yourpassword'

    email_port = 25

    def simple_mail(to, content):

      發(fā)送郵件

      import smtplib

      from email.mime.text import mimetext

      msgroot = mimetext(content, 'html', 'utf-8')

      msgroot['subject'] = [%s]有票來啦?。。?! % datetime.datetime.today().isoformat( )

      msgroot['from'] = email_host_user

      msgroot['to'] = , .join(to)

      s = smtplib.smtp(email_host, email_port)

      s.login(email_host_user, email_host_password)

      s.sendmail(email_host_user, to, msgroot.as_string())

      s.close()

    def switch_time_zone():

      切換時(shí)區(qū)

      os.environ[tz] = asia/shanghai

      time.tzset()

    switch_time_zone()

    if __name__ == '__main__':

      config = {

        trains: (k471,),

        dates: (20110129,),

        people: (

          youremail@sohu.com,

        )

      }

      try:

        main(config)

        print %s: ok % datetime.datetime.today()

      except exception, e:

        print traceback.format_exc()然后放入cron,你懂的。

    更多信息請(qǐng)查看腳本欄目
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)