1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      python之如何實(shí)現(xiàn)新聞聚合-創(chuàng)新互聯(lián)

      這篇文章給大家分享的是有關(guān)python之如何實(shí)現(xiàn)新聞聚合的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

      10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有南澗免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

      先上代碼,然后再來(lái)逐一分析:

      from nntplib import NNTP
      from time import strftime,time,localtime
      from email import message_from_string
      from urllib import urlopen
      import textwrap
      import re
      day = 24*60*60
      def wrap(string,max=70):
          '''
          '''
          return '\n'.join(textwrap.wrap(string)) + '\n'
      class NewsAgent:
          '''
          '''
          def __init__(self):
              self.sources = []
              self.destinations = []
          def addSource(self,source):
              self.sources.append(source)
          def addDestination(self,dest):
              self.destinations.append(dest)
          def distribute(self):
              items = []
              for source in self.sources:
                  items.extend(source.getItems())
              for dest in self.destinations:
                  dest.receiveItems(items)
      class NewsItem:
          def __init__(self,title,body):
              self.title = title
              self.body = body
      class NNTPSource:
          def __init__(self,servername,group,window):
              self.servername = servername
              self.group = group
              self.window = window
          def getItems(self):
              start = localtime(time() - self.window*day)
              date = strftime('%y%m%d',start)
              hour = strftime('%H%M%S',start)
              server = NNTP(self.servername)
              ids = server.newnews(self.group,date,hour)[1]
              for id in ids:
                  lines = server.article(id)[3]
                  message = message_from_string('\n'.join(lines))
                  title = message['subject']
                  body = message.get_payload()
                  if message.is_multipart():
                      body = body[0]
                  yield NewsItem(title,body)
              server.quit()
      class SimpleWebSource:
          def __init__(self,url,titlePattern,bodyPattern):
              self.url = url
              self.titlePattern = re.compile(titlePattern)
              self.bodyPattern = re.compile(bodyPattern)
          def getItems(self):
              text = urlopen(self.url).read()
              titles = self.titlePattern.findall(text)
              bodies = self.bodyPattern.findall(text)
              for title.body in zip(titles,bodies):
                  yield NewsItem(title,wrap(body))
      class PlainDestination:
          def receiveItems(self,items):
              for item in items:
                  print item.title
                  print '-'*len(item.title)
                  print item.body
      class HTMLDestination:
          def __init__(self,filename):
              self.filename = filename
          def receiveItems(self,items):
              out = open(self.filename,'w')
              print >> out,'''
              
              
               Today's News
              
              
              

      Today's News         '''         print >> out, '
        '         id = 0         for item in items:             id += 1             print >> out, '
      • %s
      • ' % (id,item.title)         print >> out, '
      '         id = 0         for item in items:             id += 1             print >> out, '

      %s

      ' % (id,item.title)             print >> out, '
      %s
      ' % item.body         print >> out, '''                           ''' def runDefaultSetup():     agent = NewsAgent()     bbc_url = 'http://news.bbc.co.uk/text_only.stm'     bbc_title = r'(?s)a href="[^" rel="external nofollow" ]*">\s*\s*(.*?)\s*'     bbc_body = r'(?s)\s*
      \s*(.*?)\s*<'     bbc = SimpleWebSource(bbc_url, bbc_title, bbc_body)     agent.addSource(bbc)     clpa_server = 'news2.neva.ru'     clpa_group = 'alt.sex.telephone'     clpa_window = 1     clpa = NNTPSource(clpa_server,clpa_group,clpa_window)     agent.addSource(clpa)     agent.addDestination(PlainDestination())     agent.addDestination(HTMLDestination('news.html'))     agent.distribute() if __name__ == '__main__':     runDefaultSetup()

      這個(gè)程序,首先從整體上進(jìn)行分析,重點(diǎn)部分在于NewsAgent,它的作用是存儲(chǔ)新聞來(lái)源,存儲(chǔ)目標(biāo)地址,然后在分別調(diào)用來(lái)源服務(wù)器(NNTPSource以及SimpleWebSource)以及寫(xiě)新聞的類(lèi)(PlainDestination和HTMLDestination)。所以從這里也看的出,NNTPSource是專(zhuān)門(mén)用來(lái)獲取新聞服務(wù)器上的信息的,SimpleWebSource是獲取一個(gè)url上的數(shù)據(jù)的。而PlainDestination和HTMLDestination的作用很明顯,前者是用來(lái)輸出獲取到的內(nèi)容到終端的,后者是寫(xiě)數(shù)據(jù)到html文件中的。

      有了這些分析,然后在來(lái)看主程序中的內(nèi)容,主程序就是來(lái)給NewsAgent添加信息源和輸出目的地址的。

      這確實(shí)是個(gè)簡(jiǎn)單的程序,不過(guò)這個(gè)程序可是用到了分層了。

      感謝各位的閱讀!關(guān)于“python之如何實(shí)現(xiàn)新聞聚合”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


      文章標(biāo)題:python之如何實(shí)現(xiàn)新聞聚合-創(chuàng)新互聯(lián)
      網(wǎng)站鏈接:http://www.ef60e0e.cn/article/dgddhd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        渝中区| 会同县| 吉安市| 鄂尔多斯市| 鄂州市| 格尔木市| 志丹县| 蒙城县| 利川市| 巫溪县| 雷波县| 确山县| 清原| 大邑县| 丹寨县| 通许县| 成都市| 孙吴县| 安康市| 门头沟区| 将乐县| 吉安市| 南昌市| 临安市| 襄汾县| 互助| 库车县| 千阳县| 天峨县| 靖江市| 麟游县| 乌拉特前旗| 吉木萨尔县| 靖远县| 秭归县| 溧水县| 苍梧县| 池州市| 英德市| 红安县| 自治县|