python json loads 中文乱码_Python爬虫:爬取虎牙星秀主播图片

python json loads 中文乱码_Python爬虫:爬取虎牙星秀主播图片_第1张图片
    • 动态爬取思路讲解
    • 导入需要的python模块
    • 通过爬虫获得的主播图片
    • 在Pycharm中所敲的代码

动态爬取思路讲解

1.简单的爬虫只需要访问网站搜索栏处的url,就可以在开发者工具(F12)处,利用正则表达式、Xpath、css等进行定位并抓取数据;
2.虎牙星秀页面不同于简单的网页,随时都在更新,但搜索栏处的url并未改变,所以它是一个动态加载(ajax)的页面;
3.需要在开发者工具界面处对network进行抓包,提取真正给网站页面提供图片链接的url;
4.通过抓包的url,会发现打开的是一个json格式的文本,在里面可以抓取到需要的数据以及链接;
5.最后我们就可以打开Pycharm,活动小手指,敲击小键盘啦!!!
(不要太忘情,打扰到身边的小伙伴哦~)

python json loads 中文乱码_Python爬虫:爬取虎牙星秀主播图片_第2张图片

导入需要的python模块

通过pip install 模块名,本人使用的是Anaconda Prompt导入

import requests
import os
import json
import time
from random import randint

使用Python导入的话比较麻烦,所以强烈建议大家使用Anaconda导入模块。

通过爬虫获得的主播图片

链接: https://www.huya.com/g/xingxiu

python json loads 中文乱码_Python爬虫:爬取虎牙星秀主播图片_第3张图片

在Pycharm中所敲的代码

# -*- coding: utf-8 -*-import requestsimport osimport jsonimport timefrom random import randintdef main():    url = 'https://www.huya.com/cache.php'    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'    }    for i in range(5):        page_num = str(i)        params = {            'm': 'LiveList',            'do': 'getLiveListByPage',            'gameId': '1663',            'tagAll': '0',            'page': page_num        }        time.sleep(randint(1,5))        img_lists = getData(url, params, headers)        img_content = get_img_content(img_lists)        saveData(img_lists, img_content)def getData(url, params, headers):    json_text = requests.get(url=url, params=params, headers=headers).text    jsonObj = json.loads(json_text)  #解码的过程,把乱码变成了中文    datas = jsonObj['data']['datas']    #print(datas)    img_lists = []    for data in datas:        img = []        nick = data['nick']        screenshot = data['screenshot']        img.append(nick)        img.append(screenshot)        img_lists.append(img)    return img_listsdef get_img_content(img_lists):    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'    }    img_content = []    for i in range(len(img_lists)):        src = img_lists[i][1]        content = requests.get(url=src, headers=headers).content        print('解析完毕第{}张图片!'.format(i))        img_content.append(content)    return img_contentdef saveData(img_lists, img_content):    if not os.path.exists('./xingxiu'):        os.mkdir('./xingxiu')    for i in range(len(img_lists)):        img_name = img_lists[i][0] + '.jpg'        img_path = './xingxiu/' + img_name        with open(img_path, 'wb') as fp:            fp.write(img_content[i])if __name__ == '__main__':    main()
python json loads 中文乱码_Python爬虫:爬取虎牙星秀主播图片_第4张图片

你可能感兴趣的:(python,json,loads,中文乱码,python,xpath,中文乱码,python爬取图片,python爬取图片并保存,python爬取百度图片)