#所用到的技术点:
#1、requests 发送请求,从服务器获取到数据
#2、BeautifulSoup 解析整个页面的源代码
#以上两个都很简单,属于一上手就会,但是需要自己去下载相关的模块
import io
from os import name
import sys
from requests.api import get#利用这两个系统函数来更改print的默认输出格式,不改的话,我这里打印要报错
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')#更改print的打印格式
import requests
from bs4 import BeautifulSoup
#1、开始请求,获取服务器返回给我们的源代码
resp = requests.get("https://www.umei.cc/bizhitupian/diannaobizhi/")#获取网页的源代码
resp.encoding = 'utf-8'#看网页的编码格式是什么,我这里获取的格式是"utf-8"
#2、对拿到手的源代码进行解析,获得一个网页的页面
main_page = BeautifulSoup(resp.text, "html.parser") #第一个参数是你获取到的源代码,第二个参数是固定的(只要你是解析网页)
#3、提取出网页中的某些部分(也就是提取出一些有用的东西,你不可能连广告也去趴吧??)
#这两个重要的方法:(1)find(),表示找到第一个就返回 (2)find_all(),表示找所有
TypeList = main_page.find("div", attrs={"class":"TypeList"}).find_all("a")#第一个参数是标签的意思,第二的参数就是你标签的属性
n = 1
for a in TypeList:
print(f"*****下载第{n}张第图片*****")
herf = "https://www.umei.cc"+a.get("href")#保存一下进入图片的超链接
#我们已近拿到了子页面的超链接了,现在最重要的就是进入到超链接的页面中去,逻辑开始重复了
child_resp = requests.get(herf)
child_resp.encoding = 'utf-8'
child_main_page = BeautifulSoup(child_resp.text, "html.parser")
##*****
picture_path = child_main_page.find("div", attrs={"class":"ImageBody"}).find("img").get("src")
name = child_main_page.find("div", attrs={"class":"ArticleTitle"}).find("strong").text
f = open(f"{name}.jpg", mode="wb") #创建可写入的非文本信息的文件,也就是放图片的地方
f.write(requests.get(picture_path).content)
#text 返回的是unicode 型的数据,一般是在网页的header中定义的编码形式。
#content返回的是bytes,二级制型的数据。
#也就是说你如果想要提取文本就用text
#但是如果你想要提取图片、文件,就要用到content
f.close()
n += 1
实验室讲解用,以防万一学姐要代码



