99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python 如何獲取旅游景點(diǎn)信息

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-21 11:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天將手把手教你使用線程池爬取同程旅行的景點(diǎn)信息及評(píng)論數(shù)據(jù)并做詞云、數(shù)據(jù)可視化?。?!帶你了解各個(gè)城市的游玩景點(diǎn)信息。

在開(kāi)始爬取數(shù)據(jù)之前,我們首先來(lái)了解一下線程。

線程

進(jìn)程 :進(jìn)程是代碼在數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。

線程 :是輕量級(jí)的進(jìn)程,是程序執(zhí)行的最小單元,是進(jìn)程的一個(gè)執(zhí)行路徑。

一個(gè)進(jìn)程中至少有一個(gè)線程,進(jìn)程中的多個(gè)線程共享進(jìn)程的資源。

線程生命周期

在創(chuàng)建多線程之前,我們先來(lái)學(xué)習(xí)一下線程生命周期,如下圖所示:

圖片

由圖可知,線程可以分為五個(gè)狀態(tài)——新建、就緒、運(yùn)行、阻塞、終止。

首先新建一個(gè)線程并開(kāi)啟線程后線程進(jìn)入就緒狀態(tài),就緒狀態(tài)的線程不會(huì)馬上運(yùn)行,要獲得CPU資源才會(huì)進(jìn)入運(yùn)行狀態(tài),在進(jìn)入運(yùn)行狀態(tài)后,線程有可能會(huì)失去CPU資源或者遇到休眠、io操作(讀寫等操作)線程進(jìn)入就緒狀態(tài)或者阻塞狀態(tài),要等休眠、io操作結(jié)束或者重新獲得CPU資源后,才會(huì)進(jìn)入運(yùn)行狀態(tài),等到運(yùn)行完后進(jìn)入終止?fàn)顟B(tài)。

注意:新建線程系統(tǒng)是需要分配資源的,終止線程系統(tǒng)是需要回收資源的,那么如何減去新建/終止線程的系統(tǒng)開(kāi)銷呢,這時(shí)我們可以創(chuàng)建線程池來(lái)重用線程,這樣就可以減少系統(tǒng)的開(kāi)銷了。

在創(chuàng)建線程池之前,我們先來(lái)學(xué)習(xí)如何創(chuàng)建多線程。

創(chuàng)建多線程

創(chuàng)建多線程可以分為四步:

  1. 創(chuàng)建函數(shù);
  2. 創(chuàng)建線程;
  3. 啟動(dòng)線程;
  4. 等待結(jié)束;

創(chuàng)建函數(shù)

為了方便演示,我們拿博客園的網(wǎng)頁(yè)做爬蟲(chóng)函數(shù),具體代碼如下所示:

import requests
urls=[
    f'https://www.cnblogs.com/#p{page}'
    for page in range(1,50)
]
def get_parse(url):
    response=requests.get(url)
    print(url,len(response.text))

首先導(dǎo)入requests網(wǎng)絡(luò)請(qǐng)求庫(kù),把我們所有的要爬取的URL保存在列表中,然后自定義函數(shù)get_parse來(lái)發(fā)送網(wǎng)絡(luò)請(qǐng)求、打印請(qǐng)求的URL和響應(yīng)的字符長(zhǎng)度。

創(chuàng)建線程

在上一步我們創(chuàng)建了爬蟲(chóng)函數(shù),接下來(lái)將創(chuàng)建線程了,具體代碼如下所示:

import threading
#多線程
def multi_thread():
    threads=[]
    for url in urls:
        threads.append(
            threading.Thread(target=get_parse,args=(url,))
        )

首先我們導(dǎo)入threading模塊,自定義multi_thread函數(shù),再創(chuàng)建一個(gè)空列表threads來(lái)存放線程任務(wù),通過(guò)threading.Thread()方法來(lái)創(chuàng)建線程。其中:

  • target為運(yùn)行函數(shù);
  • args為運(yùn)行函數(shù)所需的參數(shù)。

注意args中的參數(shù)要以元組的方式傳入,然后通過(guò).append()方法把線程添加到threads空列表中。

啟動(dòng)線程

線程已經(jīng)創(chuàng)建好了,接下來(lái)將啟動(dòng)線程了,啟動(dòng)線程很簡(jiǎn)單,具體代碼如下所示:

for thread in threads:
    thread.start()

首先我們通過(guò)for循環(huán)把threads列表中的線程任務(wù)獲取下來(lái),通過(guò).start()來(lái)啟動(dòng)線程。

等待結(jié)束

啟動(dòng)線程后,接下來(lái)將等待線程結(jié)束,具體代碼如下所示:

for thread in threads:
    thread.join()

和啟動(dòng)線程一樣,先通過(guò)for循環(huán)把threads列表中的線程任務(wù)獲取下來(lái),再使用.join()方法等待線程結(jié)束。

多線程已經(jīng)創(chuàng)建好了,接下來(lái)將測(cè)試一下多線程的速度如何,具體代碼如下所示:

if __name__ == '__main__':
 t1=time.time()
    multi_thread()
    t2=time.time()
    print(t2-t1)

運(yùn)行結(jié)果如下圖所示:

圖片

多線程爬取50個(gè)博客園網(wǎng)頁(yè)只要1秒多,而且多線程的發(fā)送網(wǎng)絡(luò)請(qǐng)求的URL是隨機(jī)的。

我們來(lái)測(cè)試一下單線程的運(yùn)行時(shí)間,具體代碼如下所示:

if __name__ == '__main__':
    t1=time.time()
    for i in urls:
        get_parse(i)
    t2=time.time()
    print(t2-t1)

運(yùn)行結(jié)果如下圖所示:

圖片

單線程爬取50個(gè)博客園網(wǎng)頁(yè)用了9秒多,單線程的發(fā)送網(wǎng)絡(luò)請(qǐng)求的URL是按順序的。

在上面我們說(shuō)了,新建線程系統(tǒng)是需要分配資源的,終止線程系統(tǒng)是需要回收資源的,為了減少系統(tǒng)的開(kāi)銷,我們可以創(chuàng)建線程池。

線程池原理

一個(gè)線程池由兩部分組成,如下圖所示:

圖片

  • 線程池:里面提前建好N個(gè)線程,這些都會(huì)被重復(fù)利用;
  • 任務(wù)隊(duì)列:當(dāng)有新任務(wù)的時(shí)候,會(huì)把任務(wù)放在任務(wù)隊(duì)列中。

當(dāng)任務(wù)隊(duì)列里有任務(wù)時(shí),線程池的線程會(huì)從任務(wù)隊(duì)列中取出任務(wù)并執(zhí)行,執(zhí)行完任務(wù)后,線程會(huì)執(zhí)行下一個(gè)任務(wù),直到?jīng)]有任務(wù)執(zhí)行后,線程會(huì)回到線程池中等待任務(wù)。

使用線程池可以處理突發(fā)性大量請(qǐng)求或需要大量線程完成任務(wù)(處理時(shí)間較短的任務(wù))。

好了,了解了線程池原理后,我們開(kāi)始創(chuàng)建線程池。

線程池創(chuàng)建

Python提供了ThreadPoolExecutor類來(lái)創(chuàng)建線程池,其語(yǔ)法如下所示:

ThreadPoolExecutor(max_workers=None, thread_name_prefix='', initializer=None, initargs=())

其中:

  • max_workers:最大線程數(shù);
  • thread_name_prefix:允許用戶控制由線程池創(chuàng)建的threading.Thread工作線程名稱以方便調(diào)試;
  • initializer:是在每個(gè)工作者線程開(kāi)始處調(diào)用的一個(gè)可選可調(diào)用對(duì)象;
  • initargs:傳遞給初始化器的元組參數(shù)。

注意:在啟動(dòng) max_workers 個(gè)工作線程之前也會(huì)重用空閑的工作線程。

在ThreadPoolExecutor類中提供了map()和submit()函數(shù)來(lái)插入任務(wù)隊(duì)列。其中:

map()函數(shù)

map()語(yǔ)法格式為:

map(調(diào)用方法,參數(shù)隊(duì)列)

具體示例如下所示:

import requestsimport concurrent.futuresimport timeurls=[    f'https://www.cnblogs.com/#p{page}'    for page in range(1,50)]def get_parse(url):    response=requests.get(url)    return response.textdef map_pool():    with concurrent.futures.ThreadPoolExecutor(max_workers=20) as pool:        htmls=pool.map(get_parse,urls)        htmls=list(zip(urls,htmls))        for url,html in htmls:            print(url,len(html))if __name__ == '__main__':    t1=time.time()    map_pool()    t2=time.time()    print(t2-t1)

首先我們導(dǎo)入requests網(wǎng)絡(luò)請(qǐng)求庫(kù)、concurrent.futures模塊,把所有的URL放在urls列表中,然后自定義get_parse()方法來(lái)返回網(wǎng)絡(luò)請(qǐng)求返回的數(shù)據(jù),再自定義map_pool()方法來(lái)創(chuàng)建代理池,其中代理池的最大max_workers為20,調(diào)用map()方法把網(wǎng)絡(luò)請(qǐng)求任務(wù)放在任務(wù)隊(duì)列中,在把返回的數(shù)據(jù)和URL合并為元組,并放在htmls列表中。

運(yùn)行結(jié)果如下圖所示:

圖片

可以發(fā)現(xiàn)map()函數(shù)返回的結(jié)果和傳入的參數(shù)順序是對(duì)應(yīng)的。

注意:當(dāng)我們直接在自定義方法get_parse()中打印結(jié)果時(shí),打印結(jié)果是亂序的。

submit()函數(shù)

submit()函數(shù)語(yǔ)法格式如下:

submit(調(diào)用方法,參數(shù))

具體示例如下:

def submit_pool():    with concurrent.futures.ThreadPoolExecutor(max_workers=20)as pool:        futuress=[pool.submit(get_parse,url)for url in urls]        futures=zip(urls,futuress)        for url,future in futures:            print(url,len(future.result()))

運(yùn)行結(jié)果如下圖所示:

圖片

注意:submit()函數(shù)輸出結(jié)果需需要調(diào)用result()方法。

好了,線程知識(shí)就學(xué)到這里了,接下來(lái)開(kāi)始我們的爬蟲(chóng)。

爬前分析

首先我們進(jìn)入同程旅行的景點(diǎn)網(wǎng)頁(yè)并打開(kāi)開(kāi)發(fā)者工具,如下圖所示:

圖片

經(jīng)過(guò)尋找,我們發(fā)現(xiàn)各個(gè)景點(diǎn)的基礎(chǔ)信息(詳情頁(yè)URL、景點(diǎn)id等)都存放在下圖的URL鏈接中,

圖片

其URL鏈接為:

https://www.ly.com/scenery/NewSearchList.aspx?&action=getlist&page=2&kw=&pid=6&cid=80&cyid=0&sort=&isnow=0&spType=&lbtypes=&IsNJL=0&classify=0&grade=&dctrack=1%CB%871629537670551030%CB%8720%CB%873%CB%872557287248299209%CB%870&iid=0.6901326566387387

經(jīng)過(guò)增刪改查操作,我們可以把該URL簡(jiǎn)化為:

https://www.ly.com/scenery/NewSearchList.aspx?&action=getlist&page=1&pid=6&cid=80&cyid=0&isnow=0&IsNJL=0

其中page為我們翻頁(yè)的重要參數(shù)。

打開(kāi)該URL鏈接,如下圖所示:

圖片

通過(guò)上面的URL鏈接,我們可以獲取到很多景點(diǎn)的基礎(chǔ)信息,隨機(jī)打開(kāi)一個(gè)景點(diǎn)的詳情網(wǎng)頁(yè)并打開(kāi)開(kāi)發(fā)者模式,經(jīng)過(guò)查找,評(píng)論數(shù)據(jù)存放在如下圖的URL鏈接中,

圖片

其URL鏈接如下所示:

https://www.ly.com/scenery/AjaxHelper/DianPingAjax.aspx?action=GetDianPingList&sid=12851&page=1&pageSize=10&labId=1&sort=0&iid=0.48901069375088

其中:action、labId、iid、sort為常量,sid是景點(diǎn)的id,page控制翻頁(yè),pageSize是每頁(yè)獲取的數(shù)據(jù)量。

在上上步中,我們知道景點(diǎn)id的存放位置,那么構(gòu)造評(píng)論數(shù)據(jù)的URL就很簡(jiǎn)單了。

實(shí)戰(zhàn)演練

這次我們爬蟲(chóng)步驟是:

  1. 獲取景點(diǎn)基本信息
  2. 獲取評(píng)論數(shù)據(jù)
  3. 創(chuàng)建MySQL數(shù)據(jù)庫(kù)
  4. 保存數(shù)據(jù)
  5. 創(chuàng)建線程池
  6. 數(shù)據(jù)分析

獲取景點(diǎn)基本信息

首先我們先獲取景點(diǎn)的名字、id、價(jià)格、特色、地點(diǎn)和等級(jí),主要代碼如下所示:

def get_parse(url):    response=requests.get(url,headers=headers)    Xpath=parsel.Selector(response.text)    data=Xpath.xpath('/html/body/div')    for i in data:        Scenery_data={            'title':i.xpath('./div/div[1]/div[1]/dl/dt/a/text()').extract_first(),            'sid':i.xpath('//div[@class="list_l"]/div/@sid').extract_first(),            'Grade':i.xpath('./div/div[1]/div[1]/dl/dd[1]/span/text()').extract_first(),       'Detailed_address':i.xpath('./div/div[1]/div[1]/dl/dd[2]/p/text()').extract_first().replace('地址:',''),            'characteristic':i.xpath('./div/div[1]/div[1]/dl/dd[3]/p/text()').extract_first(),            'price':i.xpath('./div/div[1]/div[2]/div[1]/span/b/text()').extract_first(),            'place':i.xpath('./div/div[1]/div[1]/dl/dd[2]/p/text()').extract_first().replace('地址:','')[6:8]        }

首先自定義方法get_parse()來(lái)發(fā)送網(wǎng)絡(luò)請(qǐng)求后使用parsel.Selector()方法來(lái)解析響應(yīng)的文本數(shù)據(jù),然后通過(guò)xpath來(lái)獲取數(shù)據(jù)。

獲取評(píng)論數(shù)據(jù)

獲取景點(diǎn)基本信息后,接下來(lái)通過(guò)景點(diǎn)基本信息中的sid來(lái)構(gòu)造評(píng)論信息的URL鏈接,主要代碼如下所示:

def get_data(Scenery_data):    for i in range(1,3):        link = f'https://www.ly.com/scenery/AjaxHelper/DianPingAjax.aspx?action=GetDianPingList&sid={Scenery_data["sid"]}&page={i}&pageSize=100&labId=1&sort=0&iid=0.20105777381446832'        response=requests.get(link,headers=headers)        Json=response.json()        commtent_detailed=Json.get('dpList')        # 有評(píng)論數(shù)據(jù)        if commtent_detailed!=None:            for i in commtent_detailed:                Comment_information={                    'dptitle':Scenery_data['title'],                    'dpContent':i.get('dpContent'),                    'dpDate':i.get('dpDate')[5:7],                    'lineAccess':i.get('lineAccess')                }        #沒(méi)有評(píng)論數(shù)據(jù)        elif commtent_detailed==None:            Comment_information={                'dptitle':Scenery_data['title'],                'dpContent':'沒(méi)有評(píng)論',                'dpDate':'沒(méi)有評(píng)論',                'lineAccess':'沒(méi)有評(píng)論'            }

首先自定義方法get_data()并傳入剛才獲取的景點(diǎn)基礎(chǔ)信息數(shù)據(jù),然后通過(guò)景點(diǎn)基礎(chǔ)信息的sid來(lái)構(gòu)造評(píng)論數(shù)據(jù)的URL鏈接,當(dāng)在構(gòu)造評(píng)論數(shù)據(jù)的URL時(shí),需要設(shè)置pageSize和page這兩個(gè)變量來(lái)獲取多條評(píng)論和進(jìn)行翻頁(yè),構(gòu)造URL鏈接后就發(fā)送網(wǎng)絡(luò)請(qǐng)求。

這里需要注意的是:有些景點(diǎn)是沒(méi)有評(píng)論,所以我們需要通過(guò)if語(yǔ)句來(lái)進(jìn)行設(shè)置。

創(chuàng)建MySQL數(shù)據(jù)庫(kù)

這次我們把數(shù)據(jù)存放在MySQL數(shù)據(jù)庫(kù)中,由于數(shù)據(jù)比較多,所以我們把數(shù)據(jù)分為兩種數(shù)據(jù)表,一種是景點(diǎn)基礎(chǔ)信息表,一種是景點(diǎn)評(píng)論數(shù)據(jù)表,主要代碼如下所示:

#創(chuàng)建數(shù)據(jù)庫(kù)def create_db():    db=pymysql.connect(host=host,user=user,passwd=passwd,port=port)    cursor=db.cursor()    sql='create database if not exists commtent default character set utf8'    cursor.execute(sql)    db.close()    create_table()#創(chuàng)建景點(diǎn)信息數(shù)據(jù)表def create_table():    db=pymysql.connect(host=host,user=user,passwd=passwd,port=port,db='commtent')    cursor=db.cursor()    sql = 'create table if not exists Scenic_spot_data (title varchar(255) not null, link varchar(255) not null,Grade varchar(255) not null, Detailed_address varchar(255) not null, characteristic varchar(255)not null, price int not null, place varchar(255) not null)'    cursor.execute(sql)    db.close()

首先我們調(diào)用pymysql.connect()方法來(lái)連接數(shù)據(jù)庫(kù),通過(guò).cursor()獲取游標(biāo),再通過(guò).execute()方法執(zhí)行單條的sql語(yǔ)句,執(zhí)行成功后返回受影響的行數(shù),然后關(guān)閉數(shù)據(jù)庫(kù)連接,最后調(diào)用自定義方法create_table()來(lái)創(chuàng)建景點(diǎn)信息數(shù)據(jù)表。

這里我們只給出了創(chuàng)建景點(diǎn)信息數(shù)據(jù)表的代碼,因?yàn)閯?chuàng)建數(shù)據(jù)表只是sql這條語(yǔ)句稍微有點(diǎn)不同,其他都一樣,大家可以參考這代碼來(lái)創(chuàng)建各個(gè)景點(diǎn)評(píng)論數(shù)據(jù)表。

保存數(shù)據(jù)

創(chuàng)建好數(shù)據(jù)庫(kù)和數(shù)據(jù)表后,接下來(lái)就要保存數(shù)據(jù)了,主要代碼如下所示:

#保存景點(diǎn)數(shù)據(jù)到景點(diǎn)數(shù)據(jù)表中def saving_scenery_data(srr):    db = pymysql.connect(host=host, user=user, password=passwd, port=port, db='commtent')    cursor = db.cursor()    sql = 'insert into Scenic_spot_data(title, link, Grade, Detailed_address, characteristic,price,place) values(%s,%s,%s,%s,%s,%s,%s)'    try:        cursor.execute(sql, srr)        db.commit()    except:        db.rollback()    db.close()

首先我們調(diào)用pymysql.connect()方法來(lái)連接數(shù)據(jù)庫(kù),通過(guò).cursor()獲取游標(biāo),再通過(guò).execute()方法執(zhí)行單條的sql語(yǔ)句,執(zhí)行成功后返回受影響的行數(shù),使用了try-except語(yǔ)句,當(dāng)保存的數(shù)據(jù)不成功,就調(diào)用rollback()方法,撤消當(dāng)前事務(wù)中所做的所有更改,并釋放此連接對(duì)象當(dāng)前使用的任何數(shù)據(jù)庫(kù)鎖。

注意:srr是傳入的景點(diǎn)信息數(shù)據(jù)。

創(chuàng)建線程池

好了,單線程爬蟲(chóng)已經(jīng)寫好了,接下來(lái)將創(chuàng)建一個(gè)函數(shù)來(lái)創(chuàng)建我們的線程池,使單線程爬蟲(chóng)變?yōu)槎嗑€程,主要代碼如下所示:

urls = [    f'https://www.ly.com/scenery/NewSearchList.aspx?&action=getlist&page={i}&pid=6&cid=80&cyid=0&isnow=0&IsNJL=0'    for i in range(1, 6)]def multi_thread():    with concurrent.futures.ThreadPoolExecutor(max_workers=8)as pool:        h=pool.map(get_parse,urls)if __name__ == '__main__':    create_db()    multi_thread()

創(chuàng)建線程池的代碼很簡(jiǎn)單就一個(gè)with語(yǔ)句和調(diào)用map()方法

運(yùn)行結(jié)果如下圖所示:

圖片

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11076

    瀏覽量

    216988
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7255

    瀏覽量

    91812
  • 線程池
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    7137
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86690
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    手機(jī)導(dǎo)游冬日暖游Android版評(píng)測(cè)

    即可下載城市數(shù)據(jù)。下載完成后,即可進(jìn)入該城市查看旅游攻略。例如要想到新加坡旅游的朋友,可以選擇進(jìn)入新加坡,在首頁(yè)可以看到新加坡城市熱點(diǎn)內(nèi)容推薦和旅游攻略,有旅游景點(diǎn)、購(gòu)物、美食、交通等
    發(fā)表于 12-21 15:24

    旅游景點(diǎn)無(wú)線覆蓋方案

    、會(huì)議系統(tǒng)、后期管理等提供最便捷的智慧化模式。方案一 :本方案針對(duì)景區(qū)戶外 WiFI 覆蓋工程,通過(guò)大功率 AP 超強(qiáng)的 WiF 范圍覆蓋,讓景區(qū)內(nèi)的營(yíng)銷與景點(diǎn)推廣工作開(kāi)展得更加得心應(yīng)手。方案二 :本方案針對(duì)景區(qū)的室內(nèi)加室外 WiFI 覆蓋工程,讓景區(qū)在票務(wù)交易、會(huì)議體系、餐飲娛樂(lè)等各方面占領(lǐng)
    發(fā)表于 12-03 16:24

    使用旅游機(jī)器人需要注意哪些問(wèn)題?

    `    在智能機(jī)器人發(fā)展的今天里,很多旅游景點(diǎn)都在大力推崇智慧景區(qū)、智慧旅游。甚至很多旅游景點(diǎn)我們都能看到機(jī)器人的身影,隨著旅游機(jī)器人的出現(xiàn),傳統(tǒng)解說(shuō)員已經(jīng)被機(jī)器人給頂替了,這樣更能
    發(fā)表于 06-12 17:04

    旅游景點(diǎn)使用自助售票機(jī)的好處有哪些呢?

    在物聯(lián)網(wǎng)的發(fā)展下,我們的生活也逐漸邁進(jìn)了智能化、便捷化,比如購(gòu)買地鐵自助售票機(jī)、景點(diǎn)自助售票機(jī),這些智能設(shè)備給我們帶來(lái)很大便捷。而我們也在找逐步適應(yīng)這些設(shè)備的存在。那么,旅游景點(diǎn)使用自助售票機(jī)
    發(fā)表于 09-23 10:28

    HarmonyOS原子化服務(wù)(五)策劃文案初稿案例參考

    :LOGO 廈門旅游攻略 了解更多 跳轉(zhuǎn)到首頁(yè)小卡:三張圖 旅游景點(diǎn)名稱 了解更多 跳轉(zhuǎn)到對(duì)應(yīng)景點(diǎn)頁(yè)中卡:四張 圖 旅游景點(diǎn)名稱簡(jiǎn)介 了解更多 跳轉(zhuǎn)到對(duì)應(yīng)
    發(fā)表于 02-12 09:55

    HarmonyOS原子化服務(wù)案例分享-廈門旅游攻略

    一、案例說(shuō)明我們認(rèn)為服務(wù)卡片是美麗景點(diǎn)天然的表現(xiàn)方式,本HarmonyOS應(yīng)用服務(wù)已經(jīng)上架,本后續(xù)計(jì)劃會(huì)持續(xù)迭代升級(jí),體現(xiàn)出更多旅游景點(diǎn)行業(yè)的服務(wù)特色,方便用戶使用。本應(yīng)用服務(wù)主要是旅游行業(yè)展示互動(dòng)
    發(fā)表于 07-20 15:31

    Google Earth在旅游景點(diǎn)展示中的應(yīng)用

    旅游信息網(wǎng)站中,利用虛擬現(xiàn)實(shí)技術(shù)進(jìn)行景點(diǎn)展示取得的效果比使用文字和圖片更生動(dòng)。目前利用虛擬現(xiàn)實(shí)技術(shù)進(jìn)行場(chǎng)景展示的3 種主要方式為單機(jī)仿真軟件、Web3D 和全景圖。該文
    發(fā)表于 03-30 09:30 ?33次下載

    廣西巴馬長(zhǎng)壽旅游信息系統(tǒng)的開(kāi)發(fā)研究

    本文基于GIS技術(shù),以VC++為主要軟件開(kāi)發(fā)了巴馬長(zhǎng)壽旅游信息系統(tǒng)。該系統(tǒng)除了以文本、圖象、語(yǔ)音、視頻等多媒體的形式向外界展現(xiàn)巴馬長(zhǎng)壽地區(qū)的旅游景點(diǎn)、風(fēng)土人情外,還可
    發(fā)表于 12-30 11:29 ?5次下載

    基于互聯(lián)網(wǎng)信息的多約束多目標(biāo)旅游路線推薦

    針對(duì)新游客在陌生城市如何規(guī)劃旅游路線的問(wèn)題,研究基于景點(diǎn)評(píng)分機(jī)制以及用戶多約束的旅游路線推薦問(wèn)題。首先提取景點(diǎn)的開(kāi)放時(shí)間、門票與GPS坐標(biāo)等及旅游
    發(fā)表于 12-06 11:02 ?0次下載
    基于互聯(lián)網(wǎng)<b class='flag-5'>信息</b>的多約束多目標(biāo)<b class='flag-5'>旅游</b>路線推薦

    基于概率主題模型的景點(diǎn)主題模型

    函數(shù)的參數(shù),獲取目的地景點(diǎn)的主題分布。實(shí)驗(yàn)通過(guò)對(duì)景點(diǎn)主題特征進(jìn)行聚類,評(píng)估聚類效果從而間接評(píng)價(jià)模型訓(xùn)練效果,并定性分析全局景點(diǎn)對(duì)模型的作用。實(shí)驗(yàn)結(jié)果表明,該模型對(duì)
    發(fā)表于 12-13 14:07 ?3次下載

    Worldee通過(guò)使用AR來(lái)提供各種旅游景點(diǎn)信息

    當(dāng)你在國(guó)外旅行時(shí),你可能不懂當(dāng)?shù)氐恼Z(yǔ)言,有時(shí)很難找到你周圍的景點(diǎn)。Worldee的創(chuàng)始人正試圖通過(guò)使用增強(qiáng)現(xiàn)實(shí)技術(shù)(AR)來(lái)提供各種旅游景點(diǎn)信息來(lái)解決這個(gè)問(wèn)題。
    發(fā)表于 09-07 09:00 ?1735次閱讀

    隨著越來(lái)越多的人體驗(yàn)過(guò)VR旅游,誰(shuí)知道VR是否會(huì)真正增強(qiáng)旅游體驗(yàn)嗎?

    很多人樂(lè)于在節(jié)假日前往旅游景點(diǎn)進(jìn)行游覽?,F(xiàn)如今,隨著越來(lái)越多的景點(diǎn)開(kāi)始提供虛擬現(xiàn)實(shí)體驗(yàn),也有越來(lái)越多的人體驗(yàn)過(guò)了VR旅游,VR是否會(huì)真正增強(qiáng)旅游體驗(yàn)?zāi)兀?/div>
    發(fā)表于 09-30 11:09 ?8116次閱讀

    基于旅游景點(diǎn)要素評(píng)論挖掘的情感分析

    在對(duì)旅游景點(diǎn)的評(píng)論挖掘中常以多景點(diǎn)橫向?qū)Ρ葹檠芯壳腥朦c(diǎn),為景點(diǎn)間的橫向比較及游人選擇景點(diǎn)服務(wù),而較少針對(duì)單一景點(diǎn)深入分析,為
    發(fā)表于 05-31 10:52 ?2次下載

    景區(qū)旅游景點(diǎn)負(fù)離子在線監(jiān)測(cè)系統(tǒng)簡(jiǎn)介

    ,我們也面臨著由經(jīng)濟(jì)發(fā)展帶來(lái)的日益嚴(yán)重的環(huán)境問(wèn)題,根據(jù)醫(yī)學(xué)資料顯示,空氣負(fù)氧離子被譽(yù)為空氣中的維生素,能降解中和空氣中的有害氣體。濕地公園負(fù)氧離子在線檢測(cè)設(shè)備已經(jīng)成功應(yīng)用于全國(guó)各地生態(tài)公園,濕地公園,瀑布公園,森林公園,自然保護(hù)區(qū),旅游景區(qū)。
    發(fā)表于 09-29 15:15 ?944次閱讀

    使用Python和PHP獲取天氣信息

    電子發(fā)燒友網(wǎng)站提供《使用Python和PHP獲取天氣信息.zip》資料免費(fèi)下載
    發(fā)表于 01-04 11:03 ?1次下載
    使用<b class='flag-5'>Python</b>和PHP<b class='flag-5'>獲取</b>天氣<b class='flag-5'>信息</b>