json
当我们想要看像某鱼某牙这种平台的时候,我们不能用
for page in range(...)
来达到翻页的功能,因为这些平台的翻页是通过阿贾克斯请求,瀑布流来刷新数据的
在某鱼某牙,在分类界面里面的颜值主播这一类里面,我们往下拉的时候,拉到最下面的时候,并点击第二页的时候,我们可以看到,网址并没有发生改变,但是我们在开发者工作台->NetWork->XHR可以明显看出多出来的一个2
这个很明显是我们切换页码得到的一个请求,我们把这一个链接点开
得到这一大页的代码,这个就是我们这里所讲的Json码,安县ctrl+A,选中所有的Json格式,然后复制,打开一个JSON在线解析的网站
我使用的是https://www.sojson.com/simple_json.html
然后把内容粘贴进去
用简单的话来说,其实JSON就是一个字典,然后我们可以打开data看看里面有些什么
其实这些就是这一个页面里面所有直播间的房间号,ID还有直播间的照片,我们可以通过python来把这一页的jsons码通过json.loads()
来转换成python的字典格式,然后我们在通过访问字典的方式,就可以直接访问到json里面房间的各个信息,包括标题,照片,通过把这个照片下载下来,我们就可以成功爬取到小姐姐的照片了
大致过程
1.得到json数据流的网页
2.制作一个访问头
3.将网页中的代码提取并转换成python的字典形式
4.遍历字典中我们想要的东西
5.利用request.urlretrieve()
下载图片
需要用到的库,库的下载和配置大家可以自行百度
import requests
import json
from urllib import request
具体代码
# 爬取代码并保存到与python文件一个目录下的pic目录当中
#需要自己创建一个pic的目录
import requests
import json
from urllib import request
# 公共变量
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
base_url = 'https://www.douyu.com/gapi/rknc/directory/yzRec/2'
jsons = requests.get(base_url, headers=headers).text
# 将json格式转换为python字典格式
dicts = json.loads(jsons)
try: # 防止字典越界报错
for i in range(0, 200, 1):
data = dicts['data']['rl'][i]['rs1']
print(data)
request.urlretrieve(data, './pic/'+ str(i) +'.jpg')
except:
pass