# _*_ coding : utf-8 _*_
# @Time : 2022-12-24 11:40
# @Author : Kmoon_Hs
# @File : urllib爬虫模板

import json
import os
import urllib.request
import urllib.parse

# 找到接口url
def request_url():
    # 若出现多个请求地址 可以循环
    url=input("请输入请求的URL地址:")
    return url

# 请求对象定制
def create_request(url):
    # 修改请求头 可能出现需要cookie、token情况
    headers = {
        'Cookie': '',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'

    }
    # post 请求
    method=input("请输入请求方式:")

    # 表单数据少的情况下 例如百度翻译只有一个参数,可以选择手动输入
    # 表单数据多的情况下 建议直接创建data字典对象
    if method=='post':
        # post 请求表单数据
        data = {}
        print("请分别输入data的字段和值:(输入# #结束)")
        flag=True
        while(flag):
            key,value=input().split()
            data[key]=value
            if(key=='#'):
                flag=False
        # 编码
        data = urllib.parse.urlencode(data).encode('utf-8')
        request=urllib.request.Request(url=url,headers=headers,data=data)
    else:
        # get 请求
        request = urllib.request.Request(url=url, headers=headers)
    return request

# 模拟浏览器发送请求
def get_content(request):
    response=urllib.request.urlopen(request)
    content=response.read().decode("utf-8")
    return content

# 下载数据到本地
def down_load(content):
    filename=input('请输入下载文件的文件名(包含后缀名):')
    with open(filename,'w',encoding='utf-8') as fp:
        # 若数据为json对象
        # content=str(json.loads(content))
        # 若直接下载网页
        fp.write(content)

# 下载图片到本地
def download_img(content):
    obj=json.loads(content)

    # 创建一层目录
    dir=input("请输入文件夹名:")
    os.mkdir(os.getcwd()+"\\\\%s" %dir)

    for data in obj:
        url=data['cover_url']
        name=data['title']
        urllib.request.urlretrieve(url,'./'+dir+'/'+name+'.jpg')

if __name__=='__main__':
    # 获取请求地址
    url=request_url()
    # 请求对象定制
    request=create_request(url)
    # 发送请求获取数据
    content=get_content(request)
    # 解析数据 下载文件
    down_load(content)
    # 下载图片
    download_img(content)