完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/maoyan

python 爬取 movie.douban.com 网站 、box.maoyan.com 网站

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fake_useragent import UserAgent
import codecs
import json
import requests
import numpy as np
from datetime import datetime, timedelta
import pandas as pd
from common import area_code_decoder as acdua = UserAgent()# 随机User-Agent
def headers():return {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-CN,zh;q=0.9","Connection": "keep-alive","Referer": "maoyan.com","Upgrade-Insecure-Requests": "1",'User-Agent': ua.random}# 猫眼地理位置信息
def get_id_name():data = {}with codecs.open("cities.json", 'r', 'utf-8') as f:urls = json.load(f)for k, v in urls['letterMap'].items():idd = []name = []for i in range(len(v)):idd.append(v[i]['id'])name.append(v[i]['nm'])data.update(zip(idd, name))return datadef get_real_data_list(k, v, url):res = requests.get(url, headers=headers(), timeout=30)json_data = res.json()["data"]if json_data:if len(json_data["list"]) > 0:box_total_price = res.json()["data"]["splitTotalBoxInfo"] + res.json()["data"]["splitTotalBoxUnitInfo"]df = pd.DataFrame(res.json()["data"]["list"])data = []for value in df['viewInfo'].values:data.append(value)return [v, k, box_total_price, data]else:return [v, k, '', '']else:return [v, k, '', '']# 从猫眼API获取数据
def get_data(start_date):data = get_id_name()result_data = []for k, v in data.items():url = "https://box.maoyan.com/api/cinema/minute/box.json?cityId=" + str(k) + "&cityTier=0&beginDate=" + start_date + "&type=0&isSplit=false&utm_term=5.2.3&utm_source=MoviePro_aliyun&utm_medium=android&utm_content=008796762865218&movieBundleVersion=5230&utm_campaign=AmovieproBmovieproCD-1&pushToken=dpshe96a2e871a79ed0abfa261a3be77158batpu&uuid=9B6E409786B2A3848458A63AF3E8AD39030BC38E1E7BEBBEAA88336F8C474C39&deviceId=008796762865218&language=zh"_data = get_real_data_list(k, v, url)print('Crawling ', start_date, _data)result_data.append(_data)df = pd.DataFrame(result_data)print("抓取猫眼", start_date, "数据成功")df = df.replace("", np.nan)df.columns = ['name', 'id', 'totalPrice', 'watches']  # 赋予列名df = df.dropna()  # 去除空值values = []for k, v in df['data'].astype('str').iteritems():data_value = v.replace('[', '').replace(']', '').replace("'", "").split(',')sum = 0for i in range(len(data_value)):if '万' in data_value[i]:data_value[i] = float(data_value[i].replace('万', '')) * 10000if data_value[i] == 'nan':sum = 0else:sum = sum + int(data_value[i])values.append(sum)df['watches'] = valuesdf['totalPrice'] = df['totalPrice'].str.replace("万", "").astype(float) * 10000df = df[df['totalPrice'] > 0.0]  # 删除总票房小于0.0的值 观影人次少于0的值df = df[['watches'] > 0]df.to_csv("sourcedata/" + start_date + ".csv", index=False, encoding="gbk")df = df[['name', 'totalPrice', 'watches']].copy()print("备份csv文档成功")analysis(df, start_date)def analysis():df = pd.read_csv("maoyan/sourcedata/xxx.csv", encoding="gbk")df['areacode'] = df['name'].apply(lambda x: acd.sentence_to_areacode_with_fuzzy(x))print(df)# 爬取主程序
def spider(start_date, end):while start_date <= end:get_data(start_date)start_date = (datetime.strptime(start_date, '%Y%m%d') + timedelta(days=1)).strftime("%Y%m%d")def get_str_pre_now():now = datetime.now().strftime('%Y%m%d')return (datetime.strptime(now, '%Y%m%d') + timedelta(days=-1)).strftime('%Y%m%d')def job():# 开始抓取数据pre_now = get_str_pre_now()spider(pre_now, pre_now)if __name__ == '__main__':job()analysis()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib import request
from lxml import etree# 构造函数,抓取第i页信息
def crow(i):#  构造第i页的网址url = 'https://movie.douban.com/top250?start=' + str(25 * i)#  发送请求,获得返回的html代码并保存在变量html中html = request.urlopen(url).read().decode('utf-8')# 将返回的字符串格式的html代码转换成xpath能处理的对象html = etree.HTML(html)# 先定位到li标签,datas是一个包含25个li标签的list,就是包含25部电影信息的listdatas = html.xpath('//ol[@class="grid_view"]/li')a = 0for data in datas:data_title = data.xpath('div/div[2]/div[@class="hd"]/a/span[1]/text()')data_info = data.xpath('div/div[2]/div[@class="bd"]/p[1]/text()')data_quote = data.xpath('div/div[2]/div[@class="bd"]/p[2]/span/text()')data_score = data.xpath('div/div[2]/div[@class="bd"]/div/span[@class="rating_num"]/text()')data_num = data.xpath('div/div[2]/div[@class="bd"]/div/span[4]/text()')data_picurl = data.xpath('div/div[1]/a/img/@src')print("No: " + str(i * 25 + a + 1))print(data_title)# 保存电影信息到txt文件,下载封面图片with open('douban250.txt', 'a', encoding='utf-8')as f:# 封面图片保存路径和文件名picname = './top250/' + str(i * 25 + a + 1) + '.jpg'f.write("No: " + str(i * 25 + a + 1) + '\n')f.write(data_title[0] + '\n')f.write(str(data_info[0]).strip() + '\n')f.write(str(data_info[1]).strip() + '\n')# 因为发现有几部电影没有quote,所以这里加个判断,以免报错if data_quote:f.write(data_quote[0] + '\n')f.write(data_score[0] + '\n')f.write(data_num[0] + '\n')f.write('\n' * 3)# 下载封面图片到本地,路径为picnamerequest.urlretrieve(data_picurl[0], filename=picname)a += 1if __name__ == '__main__':for i in range(10):crow(i)

python 爬取猫眼电影网站数据相关推荐

  1. python爬取猫眼电影数据

    每天一点点,记录学习每一步 近期爬虫项目: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:python爬虫爬取百度贴吧图片,requests方法 3:pyt ...

  2. (伪)Python爬取猫眼电影(反反爬虫过程中遇到的坑)

    Python爬取猫眼电影 1.打开一个猫眼电影的URL,例如本月的较火的电影<毒液:致命守护者>http://maoyan.com/films/42964 直接F12,查看审核元素,发现上 ...

  3. 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读

    利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...

  4. python猫眼电影分析_用Python 爬取猫眼电影数据分析《无名之辈》

    前言 作者: 罗昭成 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e7 ...

  5. Python爬取猫眼电影TOP100榜

    Python爬取猫眼电影TOP100榜 兴趣点: 这个没什么特别的兴趣,只是单纯爬猫眼练手的人太多了,所以我也打算加入他们,对猫眼员工说一声不好意思了,哈哈哈! 爬取网址: 传送门:https://m ...

  6. python爬取豆瓣电影信息数据

    题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...

  7. python爬取猫眼电影

    爬取猫眼电影排名前一百的电影 验证问题不知道怎么解决,隔段时间要重新输一次链接' # -*- coding: utf-8 -*- """ Created on Wed D ...

  8. Python爬取豆瓣电影评论数据(通用模板代码)----以《中国医生》为例

    中国医生豆瓣电影评论获取 1 前言 2 数据源分析 3数据爬取(代码实现) 4 结果展示 1 前言   豆瓣是影迷评分.非视频网站,也非购票平台,能长期专门使用豆瓣标记.评价电影的,相对来说是属于影迷 ...

  9. python爬猫眼电影影评,EX1 | 用Python爬取猫眼电影 APP 关于《无双》电影评论

    在本次推送中,以猫眼电影 APP 中的电影评论作为爬取目标,完成对网页数据的采集.在采集完成后,我们将每个评论数据采集分用户名.评论时间.用户性别.用户等级.用户所在城地.用户评分.以及评论内容等,并 ...

最新文章

  1. 一种新方法或让AI模型拥有“联想”力,或能识别从未见过的事物
  2. Professional WCF 4读书笔记(2)——消息交换模式
  3. python【力扣LeetCode算法题库】912- 排序数组
  4. oracle行转列与列转行
  5. ASP.NET MVC Routing、Areas、URLs
  6. python 文件操作 os.readline()函数用法
  7. 信息系统项目管理师论文指导(2/3)
  8. AE 新建项目(一)(持续更新,做到哪算哪)
  9. Win2003下Exchange2003部署图解之七
  10. 动态规划——K号数(蓝桥杯试题集)
  11. Spring DI依赖注入方式
  12. cocos2dx遇到的坑1
  13. 虚拟化—用新的视角看IT
  14. 深入理解HTTP协议(转)
  15. 2021年低压电工复审考试及低压电工模拟考试
  16. QuantumultX 初学者傻瓜教程
  17. 【渝粤教育】电大中专门店销售与服务技巧 (3)作业 题库
  18. 文档多级列表_如何在Google文档中创建多级列表
  19. 史上最狠的十二星座分析
  20. python制作网页难吗_怎么做网页制作(用python做网页与html)

热门文章

  1. 使用HTML5制作的网页游戏-管道小鸟(附源码)
  2. javaweb简单小项目-投票系统
  3. TP-LINK /TL-ER6120G Vlan 设置
  4. 使用 PingCAP Clinic 诊断 TiDB 集群
  5. 修理牛棚 贪心 USACO
  6. MATLAB方程式求解
  7. RTSP 流媒体播放地址
  8. python如何计算概率事件_Python实现的概率分布运算操作示例
  9. 2006-4-23八达岭长城
  10. 2019保研南京大学软件学院后的一些感想