这是我第一次尝试用python获取网页数据,很多东西都是第一次接触,在慢慢学习和摸索,跟着网上的课程来一步步完成了这个程序,学到了很多
import requests import json import os from urllib import request import multiprocessing headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.124 Safari/537.36 Edg/102.0.1245.44' } def get_huya_meinv(page=1): url = f'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page={page}' response=requests.get(url,headers=headers) #获取 #content=response.json () content=response.text result=content[len('getLiveListJsonpCallback('):-1]#对获取的json文本进行切片处理 # print(content) # print(result) result2=json.loads(result) # print(result2) meinv_list=result2 ['data']['datas']#取数据 for meinv in meinv_list: nick=meinv['nick'] img=meinv['screenshot'] #下载图片 try: request.urlretrieve(img,f'huya/{page}-{nick}.png') request.urlcleanup() print(f'{page}-{nick}.png下载完成') except: print('error',nick) if __name__ == '__main__': #自动创建虎牙文件夹 if not os.path.exists('huya'): os.mkdir('huya') # get_huya_meinv()#单进程 for i in range(1,10): # get_huya_meinv(page=1) multiprocessing.Process(target=get_huya_meinv,args=(i,)).start ()#多进程 #下载图片 整体思路是先用浏览器开发者工具来找到json的url然后下载成text文本后处理成json列表形式然后就用在字典里取数据的方法来获取想要的资源的url并用request模块下载这里用的是request.urlretrieve(img,f'huya/{page}-{nick}.png'),但根据后来的经验这个方法可能会在一些情况下不适用,更有普适性的方法是:
pic = requests.get(img,headers=headers)
with open (f'huya/{page}-{nick}.png','wb') as f:
f.write(pic.content)