爬虫学习笔记(三)——利用JSON爬取豆瓣热映的使用

系列文章目录

爬虫学习笔记(一):requests基础用法之爬取各类主流网站1
爬虫学习笔记(二):requests基础用法之爬取各类主流网站2



前言

经过上2篇的内容,我们已经对lxml加xpath的爬取思路已经比较熟悉了。今天我们尝试对json内的内容进行一个爬取。很多时候网站的内容并不是保存在html中的,通过json进行加密,增加了爬取内容的难度。


提示:以下是本篇文章正文内容,下面案例可供参考

一、JSON是什么?

示例: json的全称为:JavaScript Object Notation,是一种轻量级的数据交互格式。而在Python中处理JSON格式的模块有json和pickle两个。
json模块和pickle都提供了四个方法:dumps, dump, loads, load
序列化:将python的数据转换为json格式的字符串(dumps, dum)
反序列化:将json格式的字符串转换成python的数据类型( loads, load)

二、使用步骤

1.引入库

库引入的代码如下(示例):

import json
import requests

2.查找数据

其实这一步对于新手是最难的。我看过不少关于爬取豆瓣的文章,但是由于时效性,或者豆瓣刻意改变了页面布局,你很难利用原来的文章找到对应的数据,一会儿,我会都把坑点出来给大家看。
2.1利用谷歌CHROME浏览器打开豆瓣手机版页面。

!注意:一定要确保是手机版本,手机版本更好爬取。网址如下:https://m.douban.com/movie/
这里出现第一个坑
假设我们要爬取的是“豆瓣热映”,但是新手机版本的豆瓣电影里有“豆瓣热映”,“豆瓣榜单”,“豆瓣片单”等多个专栏,内容被整合了,因此你很难利用CHROME浏览器找到对应的JSON数据。
这里先提供一下“豆瓣热映”的真实URL地址:“https://m.douban.com/movie/nowintheater?loc_id=108288”
大家打开后是这样的:
在这里插入图片描述
用Chrome浏览器打开检查页面,我们在NETWORK下面的XHR标签下,找到一个包含文字“item”的JSON文件,从proview进行查看,找到内容和element内的完全一致。在这里插入图片描述

在这里插入图片描述
剩下的就简单了,直接上代码:

# -*- coding: utf-8 -*-
import json
import requests

headers={"Referer": "https://m.douban.com/movie/nowintheater?loc_id=108288",
         "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Mobile Safari/537.36"}
url = "https://m.douban.com/rexxar/api/v2/subject_collection/movie_showing/items?os=android&for_mobile=1&start=0&count=18&loc_id=108288"
        # 需要爬数据的网址
response = requests.get(url,headers=headers)
# 先找到对应JSon的url
#html_str = parse_url(url)
# json.laods把json字符串转化为python
#print(json.loads(response.content.decode("utf-8")))

print(type(response.json()))
ret1 = json.loads(response.text)
#print(ret1)
content_list = ret1["subject_collection_items"]
print(content_list)
for i in content_list:
    items = {"电影名称": i['title'],"上映时间": i['release_date'],"网址":i['uri']}
    content = json.dumps(items, ensure_ascii=False) + "\n,"
    with open("doubandianying.txt", "a", encoding="utf-8") as f:
        f.write(content)

注意这个代码里面的坑:HEADER里面的Referer": "https://m.douban.com/movie/nowintheater?loc_id=108288"是必须带上的,不然爬取不到内容


总结
提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了JSON爬虫的使用,对于JSON内容的查找是很困难的,因为网站被爬多了会尽量隐藏信息,也会设置反扒机制。当我们碰见多页面整合时,只能找到真实的单个专栏的页面,更容易爬取。例如:大家可以尝试豆瓣电视剧的美剧或日剧专栏,地址如下:https://m.douban.com/tv/american
在这个网址里面,XHR的含"items"JSON文件很容易被查找到。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值