第1关:网页爬虫选择题
任务描述
本关任务: 完成四个选择题
相关知识
为了完成本关任务,你需要掌握: 1.url组成 2.requests库 3.response对象的属性 4.find函数的使用
开始你的任务吧,祝你成功!


第2关:获取故宫壁纸网页的第一张图片的信息
编程要求
根据提示,在右侧编辑器补充代码,获取故宫壁纸网页 https://www.dpm.org.cn/lights/royal/p/1.html 的第一张图片的地址和名字。
-
将地址存放在
imglj变量中; -
将标题存放在
imgmz变量中。
提示:为了比较获得的信息,评测程序会将信息存入文本文件中,这不是爬取网页的必要步骤。
开始你的任务吧,祝你成功!
import requests
from bs4 import BeautifulSoup
url = "https://www.dpm.org.cn/lights/royal/p/1.html"
#代码开始
r=requests.get(url)
r.encoding='utf-8'
soup=BeautifulSoup(r.text,"html.parser")
pic=soup.find("div", class_="pic")
x=pic.find("img")
imglj=x.attrs['src']
imgmz=x.attrs['title'].strip()
#代码结束
print(imglj)
print(imgmz)
f1=open("tpxx.txt","w")
f1.write(imglj+"\n")
f1.write(imgmz+"\n")
f1.close()
第3关:下载故宫壁纸网页的第一张图片
编程要求
下载故宫壁纸网页 https://www.dpm.org.cn/lights/royal/p/1.html 的第一张图片,将其存放在 image 文件夹下,文件名为网页的图片标题,扩展名为 jpg 。
开始你的任务吧,祝你成功!
import requests
from bs4 import BeautifulSoup
url = "https://www.dpm.org.cn/lights/royal/p/1.html"
r=requests.get(url)
r.encoding = 'utf-8'
soup=BeautifulSoup(r.text,"html.parser")
pic=soup.find("div", class_="pic")
x=pic.find("img")
imglj=x.attrs["src"]
imgmz=x.attrs["title"].strip()
#代码开始
r=requests.get(imglj)
cpmc="image//"+imgmz+".jpg"
f1=open(cpmc,"bw")
f1.write(r.content)
f1.close()
#代码结束
第4关:下载故宫壁纸网页的单页的多张图片
本机任务
下载故宫壁纸网页 https://www.dpm.org.cn/lights/royal/p/1.html 的多张图片,将其存放在 image 文件夹下,文件名为序号加网页的图片标题,扩展名为 jpg 。
开始你的任务吧,祝你成功!
import requests
from bs4 import BeautifulSoup
url = "https://www.dpm.org.cn/lights/royal/p/1.html"
#代码开始
r=requests.get(url)
r.encoding = 'utf-8'
soup=BeautifulSoup(r.text,"html.parser")
pics=soup.find_all("div", class_="pic")
i=1
for pic in pics:
x=pic.find("img")
imglj=x.attrs["src"]
imgmz=x.attrs["title"].strip()
r=requests.get(imglj)
f=open("image/"+str(i)+imgmz+".jpg","wb")
i=i+1
f.write(r.content)
f.close()
#代码结束
第5关:获取故宫壁纸前五个网页的多张图片的信息
任务描述
本关任务:下载故宫壁纸前 5 个网页的多张图片,网页地址为 https://www.dpm.org.cn/lights/royal/p/1.html 到 https://www.dpm.org.cn/lights/royal/p/5.html 。将图片文件命名为序号标题名,扩展名为 jpg ,将图片保存在 image 文件夹下。
相关知识
为了完成本关任务,你需要掌握:
- 如何对多个网页循环;
观察到各个网页的地址只有文件名分别为 1-5 ,其他部分均相同。所以只要通过 for 循环,将循环变量从 1 到 5 ,生成网页名,即可对各个网页循环,执行保存多个图片的工作。
开始你的任务吧,祝你成功!
import requests
from bs4 import BeautifulSoup
#代码开始
i=0
for j in range(1,6):
url = "https://www.dpm.org.cn/lights/royal/p/"+str(j)+".html"
response = requests.get(url)
response.encoding="utf-8"
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
pics=soup.find_all("div",class_="pic")
for pic in pics:
x=pic.find("img")
imglj=x.attrs["src"]
imgmz=x.attrs["title"].strip()
i+=1
r=requests.get(imglj)
cpmc="image//"+str(i)+imgmz+".jpg"
f1=open(cpmc,"bw")
f1.write(r.content)
f1.close()
#代码结束
这一题的代码没有问题,下载的图片也是一样的。如果平台还是报错,是平台下载的图片顺序与代码下载的图片顺序不一致导致报错的!!!
1260





