自动化抓取图片
一、目的
学习抓取图片并把图片保存的本地。这里的项目抓取地址是一些相对简单的网站。复杂的需要稍等研究。
访问的是这个网站地址
二、思路
- 需要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)
四、结果展示
以上是获取图片的最简单流程,有不明或者不足之处,请留言!!!
转载自:https://juejin.cn/post/7092384660709179405