爬取乐视电影评论

自从学了爬虫之后,我就想把能爬的东西都爬下来,太难的现在还不会,于是在网上找一些简单的练习。

乐视电影评论算一个比较简单的ajax练习了,随便打开一个电影,看了一个浏览器加载的请求,有点多(这里遇到一个小问题,点XHR选项没有内容,但all里面却又有ajax请求,很奇怪),不知道哪个是评论的,于是清空请求,点了一下第二页,看到前两个就是。将参数复制下来,刷新几遍,只有 _和page 一直在变化,page明显是评论的页码,_这变化的好像很熟悉,想了想肯定是当前时间了。

测试完一个页面的评论之后准备把评论全部下下来.看了看居然没有最后一页。这样只能让程序去判断了,当正则没有匹配到数据的时候,就停止。因为MongoDB已经忘的差不多了,就只有用文本格式的CSV文件了(看来是时候补一波MongoDB了)。

于是就开始写代码了:

import time
import json
import re
import requests

headers = {
'Accept-Language':'zh-CN,zh;q=0.8',
'Cache-Control':'no-cache',
'Connection':'keep-alive',
'Cookie':'tj_uuid=-_15410723952709408568; tj_env=1; ssoCookieSynced=1; sso_curr_country=CN; language=zh-cn; vjuids=-6c3766614.166cf1305ba.0.80410e5332715; vjlast=1541072422.1541072422.30; hideVipsBottomLayer=1; tj_v2c=-22741543_1-31469184_1; currentLeft_miniPlayer=943; currentTop_miniPlayer=152; tj_lc=3248D86B501F32BC0FC6C88538CC4CA19B6E78CD',
'Host':'api.my.le.com',
'Pragma':'no-cache',
'Referer':'http://www.le.com/ptv/vplay/22741543.html',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.61 Safari/537.36'
}
def zuoer(page, fw):
    params = {
    'jsonp':'jQuery19108815626473850855_1541072515018',
    'type':'video',
    'rows':20,
    'page':page,
    'sort':'',
    'cid':1,
    'source':1,
    'xid':22741543,
    'pid':10004877,
    'ctype':'cmt,img,vote',
    'listType':1,
    '_':int(time.time()*1000)
    }
    url = 'http://api.my.le.com/vcm/api/list'

    resp = requests.get(url, params=params, headers=headers)
    #print(resp.url)
    json_data = re.search(r'\{[\s\S]*\}', resp.text).group()
    discuss_list = json.loads(json_data)['data']
    for discuss in discuss_list:
        content = discuss['content']
        vtime = discuss['vtime']
        username = discuss['user']['username']
        fw.write(username+','+vtime+','+content+'\n')

    return len(discuss_list)

#for page in range(1000):

with open('zuoer.discuss', 'w', encoding='utf-8') as fw:
    for page in range(1000):
        print('正在爬取第%d页。。。'%page)
        if not zuoer(page, fw):
            break

猜你喜欢

转载自blog.csdn.net/Qwertyuiop2016/article/details/83650248