likes
comments
collection
share

自动化抓取图片

作者站长头像
站长
· 阅读数 10

一、目的

学习抓取图片并把图片保存的本地。这里的项目抓取地址是一些相对简单的网站。复杂的需要稍等研究。

自动化抓取图片

访问的是这个网站地址

二、思路

  • 需要requests请求,解析页面,查找页面所有的img标签
  • 拿到img标签后,获取img的src属性
  • 需要定义保存图片的名字,就通过切片将img路径中图片的名字定义为图片的名字就可以了
  • 现在来看图片的src路径,有的是路径是一半的路径,那么我们就需要拼接下路径,生成完整的url地址
  • 然后通过request.get拿到img的二进制数据
  • 现在拿到img的二进制数据后,可以将的二进制数据存入本地的文件夹
  • 这里使用open函数,需要指定文件夹
  • 以上就是是所有的流程

三、代码编写

  • 引用库
import requests
from bs4 import BeautifulSoup
from urllib.request import urlopen
  • 封装一个解析页面的函数 主要内容是传递url,使用BeautifulSoup解析下页面,返回body
# 解析页面
def analysis_html(url):
  htmlUrl = urlopen(url)
  htmlContent = htmlUrl.read()
  soup = BeautifulSoup(htmlContent, 'html5lib')
  body = soup.find('body')
  return body

  • 封装解析图片及保存到本地的函数 这个方式首先是拿到页面的body,查看页面的属性,了解到img标签在main标签内

自动化抓取图片

先拿到mian标签

content = body.find('main')

查找标签下的所有img标签

imgs_node = content.find_all('img')

遍历img标签,拼接完整的url地址,定义img的名字,获取img的二进制数据,同时保存到指定的文件夹下

for imgs in imgs_node:
    imgsHttp = url + imgs['src']
    imgsName = imgs['src'].split('/')[-1:][0]
    imgReq = requests.get(imgsHttp)
    with open(f'xxxxxxx{imgsName}', "wb") as f:
      f.write(imgReq.content)

现在可以定义url地址,调用两个函数

analysis_url = 'xxxxxxx'
body = analysis_html(analysis_url)
analysis_text(body, analysis_url)

四、结果展示

自动化抓取图片

以上是获取图片的最简单流程,有不明或者不足之处,请留言!!!