爬取网站图片

  1. 需要导入requests包和BeautifulSoup
  2. 发送请求到服务器。事实上,我们代码拿到的是该页面的源码(在页面右键可以查看)
  3. 若出现乱码现象,说明我们跟网站上的编码格式不一样,需要转义才能正常显示
  4. 解析html ,main_page=BeautifulSoup(resp.text,‘html.parser’),所有的页面再进行解析时都有’html.parser’
  5. 然后用函数去找想要爬取内容的标签 例如find(‘div’,attrs={‘class’:‘TypeList’}),找到属性class=‘TypeList’的标签,并且找到满足需求的子标签
  6. 遍历这些子标签,重复2-5的操作,即发送请求到服务器,解析html,找到图片的img标签 获取该标签的src的属性
  7. 在发送请求到服务器,把获取到的图片保存即可
#1.用到的技术
#requests:发送请求,从服务器获取数据
#BeautifulSoup:解析整个页面的源代码

import requests
from bs4 import BeautifulSoup

#第一件事发送请求到服务器
resp=requests.get("https://www.umei.cc/meinvtupian/")    #从服务器拿到源码
resp.encoding='utf-8'   #转义

#解析HTML
main_page=BeautifulSoup(resp.text,'html.parser')
#从页面中找到某些东西
#find()找一个
#find_all()找所有
alst=main_page.find('div',attrs={'class':'TypeList'}).find_all('a',attrs={'class':'TypeBigPics'})
n=1
for a in alst:
    #print(a.get("href"))

    href='https://www.umei.cc'+a.get("href")
    # 发送请求到子页面
    resp1=requests.get(href)
    resp1.encoding = 'utf-8'
    # 进入到子页面后,解析HTML
    child_page = BeautifulSoup(resp1.text,'html.parser')
    #找到图片的src
    src=child_page.find("div",attrs={"class":"ImageBody"}).find("img").get("src")  #找到相应的标签,find('img').get('src')是找到该标签的属性
    #发送请求到服务器,把图片保存到本地
    #创建文件
    f=open("tu_%s.jpg" % n  ,mode='wb')  #%s代替的是%n,wb表示写入的内容是非文本文件
    f.write(requests.get(src).content)     #向外拿出图片信息,并写入文件
    print("恭喜你,下载好一张图片")
    #增一
    n+=1

跟着视频学的第一个爬虫,这段代码只能保存封面的第一张照片,若想保存图集还需要加一些东西。后续的问题自己试着写一下:怎么去爬取所有的照片,怎么去爬取评论等等,算是一个拓展吧!!!

上一篇:Atcoder ABC240 赛后反思及部分题解


下一篇:【damnvulnerabledefi】ctf 7-11