# _*_ 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)