资源简介
使用python爬取猫眼影评并进行可视化处理分析,具体分析可见https://blog.csdn.net/qq_32392597/article/details/96891236

代码片段和文件信息
# coding=utf-8
from urllib import request
import json
import time
from datetime import datetime
from datetime import timedelta
# 获取数据,根据url获取
def get_data(url):
headers = {
‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/64.0.3282.140 Safari/537.36‘
}
req = request.Request(url headers=headers)
response = request.urlopen(req)
if response.getcode() == 200:
return response.read()
return None
#处理数据
def parse_data(html):
data = json.loads(html)[‘cmts‘] # 将str转换为json
comments = []
for item in data:
comment = {
‘id‘: item[‘id‘]
‘nickName‘: item[‘nickName‘]
‘cityName‘: item[‘cityName‘] if ‘cityName‘ in item else ‘‘ # 处理cityName不存在的情况
‘content‘: item[‘content‘].replace(‘\n‘ ‘ ‘ 10) # 处理评论内容换行的情况
‘score‘: item[‘score‘]
‘startTime‘: item[‘startTime‘]
}
comments.append(comment)
return comments
# 存储数据,存储到文本文件
def save_to_txt():
start_time = datetime.now().strftime(‘%Y-%m-%d %H:%M:%S‘) # 获取当前时间,从当前时间向前获取
end_time = ‘2019-07-18 00:00:00‘
while start_time > end_time:
url = ‘http://m.maoyan.com/mmdb/comments/movie/1229534.json?_v_=yes&offset=0&startTime=‘ + start_time.replace(‘ ‘ ‘%20‘)
html = None
‘‘‘
问题:当请求过于频繁时,服务器会拒绝连接,实际上是服务器的反爬虫策略
解决:1.在每个请求间增加延时0.1秒,尽量减少请求被拒绝
2.如果被拒绝,则0.5秒后重试
‘‘‘
try:
html = get_data(url)
except Exception as e:
time.sleep(0.5)
html = get_data(url)
else:
time.sleep(0.1)
comments = parse_data(html)
print(comments)
start_time = comments[14][‘startTime‘] # 获得末尾评论的时间
start_time = datetime.strptime(start_time ‘%Y-%m-%d %H:%M:%S‘) + timedelta(seconds=-1) # 转换为datetime类型,减1秒,避免获取到重复数据
start_time = datetime.strftime(start_time ‘%Y-%m-%d %H:%M:%S‘) # 转换为str
#a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
for item in comments:
with open(‘C:/Users/Administrator/Desktop/使用python爬取猫眼影评并进行可视化处理分析/comments.txt‘ ‘a+‘ encoding=‘utf-8‘) as f:
f.write(str(item[‘id‘])+‘‘+item[‘nickName‘] + ‘‘ + item[‘cityName‘] + ‘‘ + item[‘content‘] + ‘‘ + str(item[‘score‘])+ ‘‘ + item[‘startTime‘] + ‘\n‘)
if __name__ == ‘__main__‘:
html = get_data(‘http://m.maoyan.com/mmdb/comments/movie/1229534.json?_v_=yes&offset=0&startTime=2019-07-18%2022%3A25%3A03‘)
comments = parse_data(html)
# print(comments)
save_to_txt()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3192 2019-07-22 21:10 使用python爬取猫眼影评并进行可视化处理分析\1.py
文件 4769 2019-07-22 21:34 使用python爬取猫眼影评并进行可视化处理分析\2.py
文件 8200650 2019-07-22 21:09 使用python爬取猫眼影评并进行可视化处理分析\comments.txt
文件 30804 2019-07-22 21:31 使用python爬取猫眼影评并进行可视化处理分析\粉丝来源.html
目录 0 2019-07-22 19:40 使用python爬取猫眼影评并进行可视化处理分析
----------- --------- ---------- ----- ----
8239415 5
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论