爬去哪儿网5A景点评论
生活随笔
收集整理的這篇文章主要介紹了
爬去哪儿网5A景点评论
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目的
獲得去哪兒網評論信息(包括評論和打分),保存到本地csv文件。前期準備工作(踩點)
1、打開網站,在門票搜索框直接輸入“5A”,發現可以獲得5A景區列表。2、按下F12,讓我們看一看,他們是如何組織這些景點信息的
哈哈,可以看到他們把所有的景點信息都放在了一個json文件里面,也就說我們直接獲取這個json文件就能直接得到5A景點的列表了。
下面是獲取json的url,參數一目了然有沒有?!
一樣的配方,一樣的味道!每個景點所有的評論依然在一個json文件里面
看到下面url里面的sightId了嗎,經過驗證這個就是景點的編號.
現在我們大致已經有了思路.第一步,獲得所有5A景點的信息用列表保存[景點名字,景點id],第二部,由景點id可以獲得景點評論.一切看起來都是那么順利.
4、等等似乎有什么不對我們再仔細看看
注意到左邊json里面的sightid了嗎?是"1582294258"明顯不是我們剛才獲取評論時用到的那個呀!倒是和地址欄里面的那個是一樣的.好吧,看來看來他們對每個景點設置兩個id,一個用于獲取html文件(記為id)另一個是評論id(記為rid).看來需要研究一下怎么把id變為rid
好吧,發現這個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 #垃圾查找函數,不會正則表達式,真是無奈 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] == "用戶未點評,系統默認好評。":#去除無用的評論continuecomments.append(data)print(data[0])print(data[1])return comments#保存到本地文件 def save(l):head = ["哪網5A景區的的評論" , "評分" ]df = pd.DataFrame (l , columns = head)df.to_csv ('去哪網.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條數據"%(len(comment)))save(comment)成果展示外加反省
大概30萬條吧,美滋滋.等我開心完就回來,就回來整理出現的問題.歡迎各位大佬批評指正.
總結
以上是生活随笔為你收集整理的爬去哪儿网5A景点评论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一篇文章彻底说清JS的深拷贝/浅拷贝
- 下一篇: Mac连接远程Linux管理文件(sam