日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬去哪儿网5A景点评论

發(fā)布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬去哪儿网5A景点评论 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目的

獲得去哪兒網(wǎng)評論信息(包括評論和打分),保存到本地csv文件。

前期準備工作(踩點)

1、打開網(wǎng)站,在門票搜索框直接輸入“5A”,發(fā)現(xiàn)可以獲得5A景區(qū)列表。

2、按下F12,讓我們看一看,他們是如何組織這些景點信息的

哈哈,可以看到他們把所有的景點信息都放在了一個json文件里面,也就說我們直接獲取這個json文件就能直接得到5A景點的列表了。
下面是獲取json的url,參數(shù)一目了然有沒有?!

http://piao.qunar.com/ticket/list.json?keyword=5A&region=&from=mps_search_suggest&page=2 3、接下來我們再研究一下每個景點的詳情頁

一樣的配方,一樣的味道!每個景點所有的評論依然在一個json文件里面
看到下面url里面的sightId了嗎,經(jīng)過驗證這個就是景點的編號.

http://piao.qunar.com/ticket/detailLight/sightCommentList.json?sightId=3076&index=2&page=2&pageSize=10&tagType=0

現(xiàn)在我們大致已經(jīng)有了思路.第一步,獲得所有5A景點的信息用列表保存[景點名字,景點id],第二部,由景點id可以獲得景點評論.一切看起來都是那么順利.

4、等等似乎有什么不對我們再仔細看看

注意到左邊json里面的sightid了嗎?是"1582294258"明顯不是我們剛才獲取評論時用到的那個呀!倒是和地址欄里面的那個是一樣的.好吧,看來看來他們對每個景點設置兩個id,一個用于獲取html文件(記為id)另一個是評論id(記為rid).看來需要研究一下怎么把id變?yōu)閞id

好吧,發(fā)現(xiàn)這個id隱藏在head標簽下嘍.

上代碼

采完點,我們就可以寫代碼了 import pandas as pd import requests as req import time,json#獲得景點id def GetId():sightlist = []#儲存包含景點列表的jsonfor i in range(1,23):#先把所有景點列表的json都下載下來url = 'http://piao.qunar.com/ticket/list.json?from=mpl_search_suggest_h&keyword=5a&page=' + str(i) + '&sort='response = req.get(url)r = json.loads(response.text)sightlist.append(r)response.close#time.sleep(3)sight = {}#景點倉庫所有的景點及其對應的id都放在這里for jsons in sightlist:#處理每個json,獲得景點信息lists = jsons['data']['sightList']for each in lists:#print(each['sightName'])key = each['sightName']sight[key] = each['sightId']return sight #垃圾查找函數(shù),不會正則表達式,真是無奈 def search(s,e,r):start = r.find(s)l = len(s)end = r.find(e,start+l,start+100)rr = r[start+l:end]return rr #獲得評論id def Getrid(id):url = 'http://piao.qunar.com/ticket/detail_' + str(id) + '.html'response = req.get(url)text = response.textrid = search('piao.qunar.com/ticket/detail_','.html',text)#這個方法是我百度的,有些時候用起來還真是方便num = search('<li class="mp-commentstab-item mp-actived" mp-role="tagItem" data-type="0">全部(',')</li>',text)dd = []dd.append(rid)dd.append(num)return dd #獲得一個景點的評論 def Getcom(rid,num,name):comments = [['*********************************以下是' + name + '的評論*********************************','']]#初始化并給每個景點的評論加上表頭page = 1200 if int(num) > 1200 else int(num)#按照上級要求,每個景點1200條左右評論就行for i in range(1,(page//10)+1):#逐頁獲取評論并保存url = 'http://piao.qunar.com/ticket/detailLight/sightCommentList.json?sightId=' + str(rid) + '&index='+ str(i) + '&page=' + str(i) + '&pageSize=10&tagType=0'response = req.get(url)r = json.loads(response.text)if 'commentList' in r['data'].keys():for each in r['data']['commentList']:data = []#【評論,評分】data.append(each['content'])data.append(each['score'])if data[0] == "用戶未點評,系統(tǒng)默認好評。":#去除無用的評論continuecomments.append(data)print(data[0])print(data[1])return comments#保存到本地文件 def save(l):head = ["哪網(wǎng)5A景區(qū)的的評論" , "評分" ]df = pd.DataFrame (l , columns = head)df.to_csv ('去哪網(wǎng).csv', encoding = "utf-8")if __name__ =="__main__":sightid = GetId()#獲得景點 idcomment = []for each in sightid:print(each)print(Getrid(sightid[each])[0])print(Getrid(sightid[each])[1])co = Getcom(Getrid(sightid[each])[0],Getrid(sightid[each])[1],each)comment.extend(co)print("本次共爬取信息%d條數(shù)據(jù)"%(len(comment)))save(comment)

成果展示外加反省

大概30萬條吧,美滋滋.等我開心完就回來,就回來整理出現(xiàn)的問題.歡迎各位大佬批評指正.

總結(jié)

以上是生活随笔為你收集整理的爬去哪儿网5A景点评论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。