Python爬虫爬取猫眼电影风语咒影评评论信息
風語咒作為扛起國漫崛起的又一國漫之作,爬取風語咒貓眼的電影評論數(shù)據(jù),以便對其評論做之后的數(shù)據(jù)分析。
此次demo的流程圖如下:
一.找到貓眼電影中風語咒影評得json數(shù)據(jù):
l
找出url后,往下滾動后,發(fā)現(xiàn)其并無評論頁面得接口,這時通過f12啟動手機版得調(diào)試模式,通過手機端得界面尋找此電影的評論的接口位置。刷新后如下:
找到位置后,點開評論區(qū),因為其中的評論采用的是js的方式加載,故當其向下拉動時,通過Network可以獲得其中的json串,通過json串得出其中的評論json的url。
二.觀察url,尋找其中的參數(shù)規(guī)律:
風語咒影評的某評論json的url如下:
http://m.maoyan.com/mmdb/comments/movie/1217513.json?_v_=yes&offset=45&startTime=2018-08-23%2015%3A24%3A16?通過分析其中的參數(shù)并在瀏覽器上嘗試,可以發(fā)現(xiàn)其中offset和starttime的參數(shù)均為可變的,經(jīng)實踐得知,starttime參數(shù)的含義是該條評論的時間,而offset指的是該頁評論的index;那么我們可以通過格式化這兩個參數(shù)的值,來對影評評論數(shù)據(jù)進行抓取。
? 因為我們暫時不知其中的offset到多少會為空,所以我們可以使用for循環(huán)對page進行操作,通過觀察每頁中的數(shù)據(jù),發(fā)現(xiàn)每頁評論的條數(shù)為15條,故在此每次遍歷15條,即第一次的offset為0的話,下一次遍歷的offset則為15,同樣日期也可以用range的方法進行賦值:
#抓取20號到23號的數(shù)據(jù) date = range(20,23) for day in date:for page in range(0,100):url1 = url.format(page*15,str(day))三.load其中的json內(nèi)容,從中篩選提取出自己需要的數(shù)據(jù):
? ?通過將得到的json數(shù)據(jù)解析后,發(fā)現(xiàn)其中評論在cmt和hcmt兩個key內(nèi),通過loads的方法將json轉(zhuǎn)化為字典:
def get_json(url,k_name):json_str = requests.get(url=url,headers=headers).contentdata = json.loads(json_str)data = data[str(k_name)]return data? 樓主中間嘗試了很多次,發(fā)現(xiàn)有時會經(jīng)常出現(xiàn)重復(fù)的數(shù)據(jù),經(jīng)過研究發(fā)現(xiàn),cmt中是最新的評論,而hcmt中是最熱的10條評論,只有10條(怪不得一直看到這幾條。。。)
? ?于是采用對整體進行cmt采取遍歷,但是在遍歷中,只對hcmt中的評論的content內(nèi)容取1次的方法,在外圍設(shè)置cnt計數(shù)實現(xiàn):
# 最新短評 data_cmts = get_json(url1,'cmts') # 最熱短評 data_hcmts = get_json(url1, 'hcmts') for data_cmt in data_cmts:item = {}if cnt == 0:for data_hcmt in data_hcmts:#最熱評論print(data_hcmt['content'])cnt+=1#輸出最新評論print(data_hcmt['content'])?
四.保存成csv格式的文件
? ?最終將文件保存,由于評論數(shù)據(jù)中不止有評論內(nèi)容,還包含評論時間,評論作者,評論地點等一些內(nèi)容,所以采用了pandas的方法來存儲成csv格式,考慮到采集數(shù)據(jù)過程中可能會出現(xiàn)異常,故使用try,,except的格式來進行,當采集到的數(shù)據(jù)為空時,就表示采集完畢,保存到csv文件中:
??
df = pd.DataFrame(columns=['city','content']) try:....item = {}item['city'] = data_cmt['cityName']item['content'] = data_cmt['content']item['date'] = data_cmt['startTime']df = df.append(item, ignore_index=True) except Exception as e:df.to_csv('train_set.csv',encoding='utf_8_sig')continue完整代碼可以移步github,水平不足,希望多多拍磚,感謝!
github:
https://github.com/476736794/-
總結(jié)
以上是生活随笔為你收集整理的Python爬虫爬取猫眼电影风语咒影评评论信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【毕业设计】plc 水果采摘机械臂 --
- 下一篇: keil突然烧录不进去了解决记录