python菜鸟心路历程(一)

前言

为啥要学Python呢?是因为看了好多爬xx条数据分析xx,看的我心潮澎湃,而且工作上没有任何的技术相关任务,都是写PPT写材料,感觉自己越来越废 - -
文章写给自己,督促自己学习。
好多自己踩的坑都忘了 = = 再踩再补吧

Python的安装

第一次用的python3.7+pycharm的组合,后来重装系统后直接换成anaconda省时省力,不过出现过导入的包不好用的问题,忘了怎么解决的 - - (坑一)

如何开始爬虫

我是参考了一本书《PYTHON网络爬虫从入门到实践》,好多基础性的知识是从这本书前半本学习的,如果基础一般的同学可以参考一下,简单的例子还是不错的。(说实话看了这本书基本后边都不用写了ε=(´ο`*)))唉)
另:我还参考了另一位大佬的文章,https://blog.csdn.net/wenxuhonghe/article/details/84649103
附上仿写上边网址自己的代码,之前程序一直出错的原因,是start_time有的地方写成了strat_time,因为这个一直迟迟没有弄出来 - -,有时候小细节是真的要命。
另:我是写成了一坨,没有分开,这样是想让自己捋顺整个的逻辑,可能观看感受上不如贴的上个网址的作者。

import requests
import json
import datetime
import time

headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'}

start_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
end_time = '2018-12-2 00:00:00'
while start_time > end_time:

    url = 'http://m.maoyan.com/mmdb/comments/movie/42964.json?_v_=yes&offset=0&startTime=' + start_time.replace(' ', '%20')
    r = requests.get(url, headers=headers)
    r.encoding = 'utf-8'

    # 解析json数据
    json_data = json.loads(r.text)['cmts']
    comment_list = []

    for item in json_data:
        comment = {
            'nickName': item['nickName'],
            'cityName': item['cityName'] if 'cityName' in item else '',
            'content': item['content'].strip().replace('\n', ''),
            'score': item['score'],
            'startTime': item['startTime']
        }
        comment_list.append(comment)

    #html = None
    start_time = comment_list[14]['startTime']
    #print(start_time)
    start_time = datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S')+datetime.timedelta(seconds=-1)
    print(start_time)
    start_time = datetime.datetime.strftime(start_time, '%Y-%m-%d %H:%M:%S')
    #存储数据
    for item in comment_list:
        with open('text_ajax2.txt', 'a',encoding='utf-8')as f:
            # print(item)
            f.write(item['nickName'] + ',' + item['cityName'] + ',' + item['content'] + ',' + str(item['score']) +  ',' + item['startTime'] + '\n')

后续

参考的网站中,说offset也可以实现翻页,后续打算试试用offset实现翻页看看结果是否和这个一样。

-------------------------------------------------------------------

2019.1.25 14:56

完成了用offset实现翻页的方式,借鉴文章地址
https://blog.csdn.net/wenxuhonghe/article/details/86515558
其实就是多了一步找出一共有多少评论的地方,paging中有个total就是了,读取一下,作为最大值就好了。
total就是总数

附上代码

import requests
import json
import datetime
import time
import pandas as pd

#获取网页html内容
def get_data(url):
    headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'}
    try:
        r = requests.get(url,headers = headers)
        return r.text
    except requests.HTTPError as e :
        print(e)
    except:
        print("unknown error")


#获取感兴趣的信息数组
def prase_data(html):
    json_data = json.loads(html)['data']['comments']
    comment_list = []
    for item in json_data:
        comment = []
        comment.append(item['nick'])
        comment.append(item['content'].strip().replace('\n',''))
        comment_list.append(comment)
    return comment_list

def save_data(comments):
    filename = 'offset.txt'
    dataframe = pd.DataFrame(comments)
    dataframe.to_csv(filename, mode='a', index=False, sep=',', header=False)

def main():
    #获取评论总数
    url  = 'http://m.maoyan.com/review/v2/comments.json?movieId=1208282&userId=-1&offset=45&limit=15&ts=1548396952162&type=3'
    html = get_data(url)
    totals  = json.loads(html)['paging']['total']
    print(totals)
    page = 0
    #翻页,读取所有评论并存储
    while page< totals:
        url = 'http://m.maoyan.com/review/v2/comments.json?movieId=1208282&userId=-1&offset=' + str(page) + '&limit=15&ts=1548396952162&type=3'
        html = get_data(url)
        comments = prase_data(html)
        save_data(comments)
        print(page)
        page+=15

if __name__ == '__main__':
    main()
    print('完成')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值