使用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

打开获取到的连接

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_limitpage_start

可以看到打开的内容为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/

这里可以看到包含了如下信息

评分

电影名称

电影的豆瓣链接

封面地址

代码介绍

这里逐行介绍代码

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. 获取相关信息并存入字典中

执行结果

我们可以选择将获取到的数据放入数据库中

源码位置

源码请访问我的github主页:

https://github.com/bsbforever/spider/blob/master/dynamic_json.py

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180212G13YH000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券