# 使用Python爬取动态网页-豆瓣电影(JSON) 2018-02-12 Python 宅必备 好久没更新Python相关的内容了,这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 第二节我们介绍如何爬取动态网页 动态网页指的是网页的内容通过js动态加载出来的 我们可以直接使用一些开发者工具查看 这里我采用谷歌浏览器的开发者工具 ## 开发环境 操作系统:windows 10 Python版本 :3.6 爬取网页模块:requests 分析网页模块:json ## 模块安装 ``` pip3 install requests ``` ## 网页分析 我们使用豆瓣电影的页面来开始分析 ``` https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0 ``` 由于是动态加载的我们这里无法直接通过get方法获取网页内容 当我们点击加载更多时可以通过开发者工具 Network选项中的XHR 来获取动态加载的js [image:67 size:orig] 打开获取到的连接 ``` https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=20 ``` 我们可以发现连接的规律,即page_limit和page_start [image:68 size:orig] 可以看到打开的内容为json格式 这里我们构造一个连接,让它从第一个电影开始,并显示100个 ``` https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=100&page_start=0 ``` 对于JSON的解析我们可以先用一个在线的网站来查看 ``` https://jsonformatter.curiousconcept.com/ ``` [image:69 size:orig] 这里可以看到包含了如下信息 - 评分 - 电影名称 - 电影的豆瓣链接 - 封面地址 ## 代码介绍 这里逐行介绍代码 **1. import相关的模块** ``` import requests import json ``` **2. 使用request模块打开并获取网页内容** ``` r = requests.get(url,verify=False) content=r.content ``` **3. 使用json.load将json格式转换为python的字典格式** 这时就可以使用字典的相关方法来处理网页了 ``` result=json.loads(content) tvs=result['subjects'] ``` **4. 获取相关信息并存入字典中** [image:70 size:orig] ## 执行结果 我们可以选择将获取到的数据放入数据库中 [image:71 size:orig] ## 源码位置 源码请访问我的github主页: [https://github.com/bsbforever/spider/blob/master/dynamic_json.py](https://github.com/bsbforever/spider/blob/master/dynamic_json.py)