<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)-創(chuàng)新互聯(lián)

            這篇文章將為大家詳細(xì)講解有關(guān)Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

            創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、花溪網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為花溪等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

            (1)環(huán)境配置,直接上代碼:

            # -*- coding: utf-8 -*-
            import requests ##導(dǎo)入requests
            from bs4 import BeautifulSoup ##導(dǎo)入bs4中的BeautifulSoup
            import os
            headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}
            all_url = 'http://beijing.8684.cn' ##開(kāi)始的URL地址
            start_html = requests.get(all_url, headers=headers) 
            #print (start_html.text)
            Soup = BeautifulSoup(start_html.text, 'lxml') # 以lxml的方式解析html文檔

            (2)爬取站點(diǎn)分析

            1、北京市公交線路分類方式有3種:

            Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)

            本文通過(guò)數(shù)字開(kāi)頭來(lái)進(jìn)行爬取,“F12”啟動(dòng)開(kāi)發(fā)者工具,點(diǎn)擊“Elements”,點(diǎn)擊“1”,可以發(fā)現(xiàn)鏈接保存在<div class="bus_kt_r1">里面,故只需要提取出div里的href即可:

            Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)

            代碼

            all_a = Soup.find(‘div',class_='bus_kt_r1').find_all(‘a(chǎn)')

            2、接著往下,發(fā)現(xiàn)每1路的鏈接都在<div id="con_site_1" class="site_list"> <a>里面,取出里面的herf即為線路網(wǎng)址,其內(nèi)容即為線路名稱,代碼

            href = a['href'] #取出a標(biāo)簽的href 屬性
            html = all_url + href
            second_html = requests.get(html,headers=headers)
            #print (second_html.text)
            Soup2 = BeautifulSoup(second_html.text, 'lxml') 
            all_a2 = Soup2.find('div',class_='cc_content').find_all('div')[-1].find_all('a') # 既有id又有class的div不知道為啥取不出來(lái),只好迂回取了

            3、打開(kāi)線路鏈接,就可以看到具體的站點(diǎn)信息了,打開(kāi)頁(yè)面分析文檔結(jié)構(gòu)后發(fā)現(xiàn):線路的基本信息存放在<div class="bus_i_content">里面,而公交站點(diǎn)信息則存放在<div class="bus_line_top"><div class="bus_line_site">里面,提取代碼:

            Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)

            title1 = a2.get_text() #取出a1標(biāo)簽的文本
            href1 = a2['href'] #取出a標(biāo)簽的href 屬性
            #print (title1,href1)
            html_bus = all_url + href1 # 構(gòu)建線路站點(diǎn)url
            thrid_html = requests.get(html_bus,headers=headers)
            Soup3 = BeautifulSoup(thrid_html.text, 'lxml') 
            bus_name = Soup3.find('div',class_='bus_i_t1').find('h2').get_text() # 提取線路名
            bus_type = Soup3.find('div',class_='bus_i_t1').find('a').get_text() # 提取線路屬性
            bus_time = Soup3.find_all('p',class_='bus_i_t4')[0].get_text() # 運(yùn)行時(shí)間
            bus_cost = Soup3.find_all('p',class_='bus_i_t4')[1].get_text() # 票價(jià)
            bus_company = Soup3.find_all('p',class_='bus_i_t4')[2].find('a').get_text() # 公交公司
            bus_update = Soup3.find_all('p',class_='bus_i_t4')[3].get_text() # 更新時(shí)間
            bus_label = Soup3.find('div',class_='bus_label')
            if bus_label:
             bus_length = bus_label.get_text() # 線路里程
            else:
             bus_length = []
            #print (bus_name,bus_type,bus_time,bus_cost,bus_company,bus_update)
            all_line = Soup3.find_all('div',class_='bus_line_top') # 線路簡(jiǎn)介
            all_site = Soup3.find_all('div',class_='bus_line_site')# 公交站點(diǎn)
            line_x = all_line[0].find('div',class_='bus_line_txt').get_text()[:-9]+all_line[0].find_all('span')[-1].get_text()
            sites_x = all_site[0].find_all('a')
            sites_x_list = [] # 上行線路站點(diǎn)
            for site_x in sites_x:
             sites_x_list.append(site_x.get_text())
            line_num = len(all_line)
            if line_num==2: # 如果存在環(huán)線,也返回兩個(gè)list,只是其中一個(gè)為空
             line_y = all_line[1].find('div',class_='bus_line_txt').get_text()[:-9]+all_line[1].find_all('span')[-1].get_text()
             sites_y = all_site[1].find_all('a')
             sites_y_list = [] # 下行線路站點(diǎn)
             for site_y in sites_y:
             sites_y_list.append(site_y.get_text())
            else:
             line_y,sites_y_list=[],[]
            information = [bus_name,bus_type,bus_time,bus_cost,bus_company,bus_update,bus_length,line_x,sites_x_list,line_y,sites_y_list]

            自此,我們就把一條線路的相關(guān)信息及上、下行站點(diǎn)信息就都解析出來(lái)了。如果想要爬取全市的公交網(wǎng)絡(luò)站點(diǎn),只需要加入循環(huán)就可以了。

            完整代碼:

            # -*- coding: utf-8 -*-
            # Python3.5
            import requests ##導(dǎo)入requests
            from bs4 import BeautifulSoup ##導(dǎo)入bs4中的BeautifulSoup
            import os
            headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}
            all_url = 'http://beijing.8684.cn' ##開(kāi)始的URL地址
            start_html = requests.get(all_url, headers=headers) 
            #print (start_html.text)
            Soup = BeautifulSoup(start_html.text, 'lxml')
            all_a = Soup.find('div',class_='bus_kt_r1').find_all('a')
            Network_list = []
            for a in all_a:
             href = a['href'] #取出a標(biāo)簽的href 屬性
             html = all_url + href
             second_html = requests.get(html,headers=headers)
             #print (second_html.text)
             Soup2 = BeautifulSoup(second_html.text, 'lxml') 
             all_a2 = Soup2.find('div',class_='cc_content').find_all('div')[-1].find_all('a') # 既有id又有class的div不知道為啥取不出來(lái),只好迂回取了
             for a2 in all_a2:
             title1 = a2.get_text() #取出a1標(biāo)簽的文本
             href1 = a2['href'] #取出a標(biāo)簽的href 屬性
             #print (title1,href1)
             html_bus = all_url + href1
             thrid_html = requests.get(html_bus,headers=headers)
             Soup3 = BeautifulSoup(thrid_html.text, 'lxml') 
             bus_name = Soup3.find('div',class_='bus_i_t1').find('h2').get_text()
             bus_type = Soup3.find('div',class_='bus_i_t1').find('a').get_text()
             bus_time = Soup3.find_all('p',class_='bus_i_t4')[0].get_text()
             bus_cost = Soup3.find_all('p',class_='bus_i_t4')[1].get_text()
             bus_company = Soup3.find_all('p',class_='bus_i_t4')[2].find('a').get_text()
             bus_update = Soup3.find_all('p',class_='bus_i_t4')[3].get_text()
             bus_label = Soup3.find('div',class_='bus_label')
             if bus_label:
              bus_length = bus_label.get_text()
             else:
              bus_length = []
             #print (bus_name,bus_type,bus_time,bus_cost,bus_company,bus_update)
             all_line = Soup3.find_all('div',class_='bus_line_top')
             all_site = Soup3.find_all('div',class_='bus_line_site')
             line_x = all_line[0].find('div',class_='bus_line_txt').get_text()[:-9]+all_line[0].find_all('span')[-1].get_text()
             sites_x = all_site[0].find_all('a')
             sites_x_list = []
             for site_x in sites_x:
              sites_x_list.append(site_x.get_text())
             line_num = len(all_line)
             if line_num==2: # 如果存在環(huán)線,也返回兩個(gè)list,只是其中一個(gè)為空
              line_y = all_line[1].find('div',class_='bus_line_txt').get_text()[:-9]+all_line[1].find_all('span')[-1].get_text()
              sites_y = all_site[1].find_all('a')
              sites_y_list = []
              for site_y in sites_y:
              sites_y_list.append(site_y.get_text())
             else:
              line_y,sites_y_list=[],[]
             information = [bus_name,bus_type,bus_time,bus_cost,bus_company,bus_update,bus_length,line_x,sites_x_list,line_y,sites_y_list]
             Network_list.append(information)
            # 定義保存函數(shù),將運(yùn)算結(jié)果保存為txt文件
            def text_save(content,filename,mode='a'):
             # Try to save a list variable in txt file.
             file = open(filename,mode)
             for i in range(len(content)):
             file.write(str(content[i])+'\n')
             file.close()
            # 輸出處理后的數(shù)據(jù) 
            text_save(Network_list,'Network_bus.txt');

            最后輸出整個(gè)城市的公交網(wǎng)絡(luò)站點(diǎn)信息,這次就先保存在txt文件里吧,也可以保存到數(shù)據(jù)庫(kù)里,比如mysql或者M(jìn)ongoDB里,這里我就不寫(xiě)了,有興趣的可以試一下,附上程序運(yùn)行后的結(jié)果圖:

            Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)

            關(guān)于“Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

            另外有需要云服務(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ì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

            本文標(biāo)題:Python中如何爬取城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)-創(chuàng)新互聯(lián)
            鏈接URL:http://www.jbt999.com/article34/ccdipe.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、搜索引擎優(yōu)化、網(wǎng)站建設(shè)

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

            營(yíng)銷型網(wǎng)站建設(shè)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 香蕉视频操逼大全 | 91啦丨国产丨人妻白洁 | 免费AA片播放 | 亚洲AV导航 | 最近中文字幕完整视频高清1最近中文 |