早几天刚好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年年度豆瓣电影榜单)相关推荐

  1. java爬虫系列(二)——爬取动态网页

    准备工作 项目地址 网页解析工具地址 启动网页解析器 根据系统选择所需文件 指定端口号启动工具 项目配置 seimi.properties SeimiAgentDemo.java 分析原网页代码 Bo ...

  2. chrome动态ip python_用Python爬虫爬取动态网页,附带完整代码,有错误欢迎指出!...

    系统环境: 操作系统:Windows8.1专业版 64bit Python:anaconda.Python2.7 Python modules:requests.random.json Backgro ...

  3. python动态页面元素爬取_爬取动态网页python+Web kit

    上一篇文章爬取动态网页python+selenium+webdriver介绍了爬取动态网站的一种模拟浏览器的方法,该方法的优劣也很明显 优: 可以模拟任何人的操作,输入账号密码,点击登录等等操作 劣: ...

  4. Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)

    文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...

  5. Python爬虫爬取动态网页

    系统环境: 操作系统:Windows8.1专业版 64bit Python:anaconda.Python2.7 Python modules:requests.random.json Backgro ...

  6. 【爬虫】Selenium爬取动态网页的base64图片

    文章简介 Selenium爬取动态网页的base64图片,并解决页面完整加载缓慢,base64字符串的获取和格式转码,一些页面不存在,部分照片无法加载等问题.后附源码. 目录 1,需求 2,环境和使用 ...

  7. python爬取动态网页图片

    爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...

  8. 爬取动态网页数据的软件-抓取动态网页数据的工具

    爬取动态网页数据,随着时代的进步,互联网的发展,不管是企业还是个人都知道了数据的重要性.今天给大家分享一款免费爬取动态网页数据的软件.只要点点鼠标就能轻松爬取到你想要的数据,不管是导出还是自动发布都支 ...

  9. 【爬取动态网页-以黄河水文站数据为例】

    爬取动态网页-以黄河水文站数据为例 一.项目背景 这个项目来源于我的本科毕业设计的一部分,导师让我去搜集这方面的数据. 二.项目过程 1.问题初探 由于我前期跟着MOOC学习了python编程语言,所 ...

最新文章

  1. AutoDim:自动Embedding维度寻优,如何节省70%的存储空间同时还能大幅提效?
  2. 领域模型驱动设计(Domain Driven Design)入门概述
  3. 获取Spring中的bean,使得线程安全性得到保障
  4. hdu 3308 LCIS 线段树 + 区间合并
  5. openjudge 放苹果 1664
  6. Java程序员必备:常见OOM异常分析
  7. php 删除字符串中链接_python面试——删除字符串中的“b”和“ac”,删除后无b和ac(CloudIn(云英)面经)...
  8. JS案例:使用对象、对象数组、正则表达式
  9. 北京允许无人车上路后,Pony.ai正式广州开跑
  10. numpy-np.random.choice
  11. null值是不会算在count以内的
  12. 基于sklearn 的one hot encoding
  13. adb重启或关机手机命令
  14. Linux下C++ libtorrent库使用
  15. 苹果描述文件服务器证书无效,iOS 描述文件重新配置失效问题,解决方法!
  16. 计算机外存储器有哪四个,计算机外存储器有哪些
  17. 解决nginx error!The page is temporarily unavailable.
  18. kso经验记录 --spring.net的应用以及配置
  19. 容器和云原生(一):初识容器化和云原生
  20. linux内核-进程的调度与切换

热门文章

  1. 公司inur php id_,PHP——个人信息管理系统
  2. 半圆阴影_圆中阴影部分面积求法的常用方法
  3. 破解phpstorm2017.3.1版本并解决win10下修改hosts问题
  4. 【微信小程序企业级开发教程】页面的生命周期和参数传递
  5. python【力扣LeetCode算法题库】104-二叉树的最大深度
  6. 基础算法 —— 贪心算法
  7. python基础练习(一)
  8. android 定位 闪退_Android使用百度地图出现闪退及定位时显示蓝屏问题
  9. python不能加密_Python之加密模块
  10. ai如何旋转画布_Ai绘制科技感晶格球体!