# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
# 可以先打开网址,分析一下,想一想应该如何爬取哦!故宫博物院壁纸网址:https://www.dpm.org.cn/lights/royal/p/1.html
# 注意:本程序可能由于网页更新出现报错,不要着急,后面的课程会学习如何解决哦!
# 第一步:补充第15行代码,爬取多页内容
# 第二步:补充第30行代码,请求壁纸对应网页(img_url),获取图片二进制数据
# 第三步:补充第34行代码,写入图片二进制数据,保存壁纸图片
import requests
import bs4
from xes.tool import *
# 可以修改下一行代码中的参数wallpaper,修改成自己的文件夹
path = xopen("wallpaper")
# 多页爬取
for i in range(1, 4):
#作答区域1:补充下一行代码,爬取多页内容(在此处 ↓ 补充)
url = "https://www.dpm.org.cn/lights/royal/p/"+str(i)+".html"
response = requests.get(url)
response.encoding = "UTF-8"
# 选取数据
soup = bs4.BeautifulSoup(response.text, "lxml")
image = soup.find_all(name="div", class_="pic")
# 展示结果
for n in image:
p = n.a.img # 获取图片标签,并存到变量p中,具体方法下一节课会学习哦!
print(p["title"]) # 取出p标签中的title属性
img_name = p["title"] # 壁纸名称
print(p["src"])
img_url = p["src"] # 壁纸链接
#作答区域2:补充下一行代码,请求壁纸对应网页(img_url),获取图片二进制数据
pic = requests.get(img_url).content
file_name = path + img_name + ".jpg"
with open(file_name, "wb") as file:
#作答区域3:补充下一行代码,写入图片二进制数据,保存壁纸图片
file.write(pic)
# # 高清版壁纸(1920*1080)
# # 说明:刚刚的程序与课程中类似,可以爬取标清版的壁纸,下面的程序可以下载高清版,方法类似
# # 但是中间需要添加一次请求高清壁纸网页的步骤哦!
# for i in range(1, 4):
# url = "https://www.dpm.org.cn/lights/royal/p/"+ str(i) +".html"
# response = requests.get(url)
# response.encoding = "UTF-8"
# # 选取数据
# soup = bs4.BeautifulSoup(response.text, "lxml")
# image = soup.find_all(name="div", class_="pic")
# # 展示结果
# for n in image:
# print(n.a.img["title"])
# img_name = n.a.img["title"] # 壁纸名称
# print(n.a["href"]) # 高清版壁纸网页
# # 得到高清版壁纸网页链接
# url1 = "https://www.dpm.org.cn" + n.a["href"]
# # 请求高清版网页
# response_img = requests.get(url1)
# soup_img = bs4.BeautifulSoup(response_img.text, "lxml")
# # 获取高清版中的img标签
# data = soup_img.find_all(name="img")[0]
# # 得到高清版壁纸图片的链接
# img_url = data["src"]
# # 保存图片
# pic = requests.get(img_url).content
# file_name = path + img_name + ".jpg"
# with open(file_name, "wb") as file:
# file.write(pic)