爬取动态网页(2017年年度豆瓣电影榜单)
早几天刚好2017年的豆瓣电影榜单web也出来了,于是打算实践一下,用的chrome浏览器。
图1
0. 观察网页元素
由于是一个动态的网页,动态效果主要由翻页或者右边的按钮实现,另外,也可以从首页的导航栏直接跳转到某一页。
首页导航栏
利用了google Chrome浏览器自带的API network网页监视器,右键-检查-network-XHR,当我们选择某一页时网络监视器将会将客户端与web服务器的一系列请求响应等交换显示出来。
我们观察右边的name这一栏,发现有一些命名为数字的条目,发现它主要是对一系列网站的请求和响应,右键选择Open-in-new-tab,我们可以发现这是一个json文件,遵循了json的语法,每一页网页的信息都包含在名为res的标签里,
PS:如果你的浏览器显示出来的是格式非常乱的代码,请下一个名为json view的chrome插件。
2017评分最高的外语电影后台的json文件
1.分析各个元素在json文件的路径
这里先以有内容的第一页,即2017评分最高的外语电影为例,主要爬取top10电影的title,评分,电影详情链接,评分人数。
1 for i in range(a): 2 message=file['res']['subjects'][i] 3 title=message['title'] 4 rating = message['rating'] 5 detail_url=message['url'] 6 rating_count=message['rating_count']
我们爬取从第一页到第88页的信息,由于这个年度电影榜单除了有***最佳电影这种页面之外,还有台词这种界面,它对应的json文件是不一样的:
另外还有几个页面只有五个item,如下:
因此我们爬取整个网站的时候需要加入几个条件语句,最后存在excel文件里。
1 import requests 2 from lxml import html 3 import time 4 import json 5 6 vis_List=range(1,88) 7 with open('E:\coding\python programs\ douabn 2017 movies.csv','w',encoding='utf-8') as f1: 8 with open('E:\coding\python programs\ douabn 2017 movie lines.csv','w',encoding='utf-8') as f2: 9 with open('E:\coding\python programs\ douabn 2017 movie stars.csv','w',encoding='utf-8') as f3: 10 for a in vis_List: 11 url_visit='https://movie.douban.com/ithil_j/activity/movie_annual2017/widget/{}'.format(a) 12 file=requests.get(url_visit).json() 13 time.sleep(5) 14 15 if (file['res']['kind_str']=='top10')or file['res']['kind_str']=='top5': 16 a = len(file['res']['subjects']) 17 tag=file['res']['payload']['title'] 18 19 f1.write('{}\n'.format(tag)) 20 21 for i in range(a): 22 message=file['res']['subjects'][i] 23 title=message['title'] 24 rating = message['rating'] 25 detail_url=message['url'] 26 rating_count=message['rating_count'] 27 print('{} {} {} {}\n'.format(title,detail_url,rating,rating_count)) 28 f1.write('{},{},{},{},{}\n'.format(i+1,title,detail_url,rating,rating_count)) 29 elif file['res']['kind_str']=='person': 30 tag=file['res']['payload']['title'] 31 f3.write('{}\n'.format(tag)) 32 for i in range(10): 33 name=file['res']['people'][i]['name'] 34 f3.write('{},{}\n'.format(i+1,name)) 35 elif file['res']['kind_str']=='the_fallen': 36 pass 37 else: 38 movie=file['res']['subject']['title'] 39 text=file['res']['payload']['text'] 40 f2.write('{},{}\n'.format(movie,text))
转载于:https://www.cnblogs.com/liuqing95/p/8176170.html
爬取动态网页(2017年年度豆瓣电影榜单)相关推荐
- java爬虫系列(二)——爬取动态网页
准备工作 项目地址 网页解析工具地址 启动网页解析器 根据系统选择所需文件 指定端口号启动工具 项目配置 seimi.properties SeimiAgentDemo.java 分析原网页代码 Bo ...
- chrome动态ip python_用Python爬虫爬取动态网页,附带完整代码,有错误欢迎指出!...
系统环境: 操作系统:Windows8.1专业版 64bit Python:anaconda.Python2.7 Python modules:requests.random.json Backgro ...
- python动态页面元素爬取_爬取动态网页python+Web kit
上一篇文章爬取动态网页python+selenium+webdriver介绍了爬取动态网站的一种模拟浏览器的方法,该方法的优劣也很明显 优: 可以模拟任何人的操作,输入账号密码,点击登录等等操作 劣: ...
- Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)
文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...
- Python爬虫爬取动态网页
系统环境: 操作系统:Windows8.1专业版 64bit Python:anaconda.Python2.7 Python modules:requests.random.json Backgro ...
- 【爬虫】Selenium爬取动态网页的base64图片
文章简介 Selenium爬取动态网页的base64图片,并解决页面完整加载缓慢,base64字符串的获取和格式转码,一些页面不存在,部分照片无法加载等问题.后附源码. 目录 1,需求 2,环境和使用 ...
- python爬取动态网页图片
爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...
- 爬取动态网页数据的软件-抓取动态网页数据的工具
爬取动态网页数据,随着时代的进步,互联网的发展,不管是企业还是个人都知道了数据的重要性.今天给大家分享一款免费爬取动态网页数据的软件.只要点点鼠标就能轻松爬取到你想要的数据,不管是导出还是自动发布都支 ...
- 【爬取动态网页-以黄河水文站数据为例】
爬取动态网页-以黄河水文站数据为例 一.项目背景 这个项目来源于我的本科毕业设计的一部分,导师让我去搜集这方面的数据. 二.项目过程 1.问题初探 由于我前期跟着MOOC学习了python编程语言,所 ...
最新文章
- AutoDim:自动Embedding维度寻优,如何节省70%的存储空间同时还能大幅提效?
- 领域模型驱动设计(Domain Driven Design)入门概述
- 获取Spring中的bean,使得线程安全性得到保障
- hdu 3308 LCIS 线段树 + 区间合并
- openjudge 放苹果 1664
- Java程序员必备:常见OOM异常分析
- php 删除字符串中链接_python面试——删除字符串中的“b”和“ac”,删除后无b和ac(CloudIn(云英)面经)...
- JS案例:使用对象、对象数组、正则表达式
- 北京允许无人车上路后,Pony.ai正式广州开跑
- numpy-np.random.choice
- null值是不会算在count以内的
- 基于sklearn 的one hot encoding
- adb重启或关机手机命令
- Linux下C++ libtorrent库使用
- 苹果描述文件服务器证书无效,iOS 描述文件重新配置失效问题,解决方法!
- 计算机外存储器有哪四个,计算机外存储器有哪些
- 解决nginx error!The page is temporarily unavailable.
- kso经验记录 --spring.net的应用以及配置
- 容器和云原生(一):初识容器化和云原生
- linux内核-进程的调度与切换
热门文章
- 公司inur php id_,PHP——个人信息管理系统
- 半圆阴影_圆中阴影部分面积求法的常用方法
- 破解phpstorm2017.3.1版本并解决win10下修改hosts问题
- 【微信小程序企业级开发教程】页面的生命周期和参数传递
- python【力扣LeetCode算法题库】104-二叉树的最大深度
- 基础算法 —— 贪心算法
- python基础练习(一)
- android 定位 闪退_Android使用百度地图出现闪退及定位时显示蓝屏问题
- python不能加密_Python之加密模块
- ai如何旋转画布_Ai绘制科技感晶格球体!