之前用爬虫抓取了文字内容,这次抓取图片。中国政府网有很多好看的生态图片,用爬虫保存下来。政府网站上的图片一般均为静态链接,不会设置动态加载反爬虫,可以稍作练习,绝不能大量爬取最终造成恶意攻击效果。http://www.gov.cn/xinwen/tupian/shengtai.htm
抓取图片和抓取文字的方法一样。
第1步:使用requests库的get()方法下载获取整个网页,再用BeautifulSoup库的find_all()方法,找出所有标签。
第2步:遍历所有的标签列表,获取每一个图片的链接地址。
第3步:使用requests库的get()方法抓取图片。这里注意,抓取到的还是是“仅显示一张图片的网页”,不能直接保存为我们肉眼可见的图片,而要使用open(filename, "wb")创建一个二进制文件,然后将这个特殊的“网页”内容写入我们新建的文件中,这样才能“下载”到图片。
open() 方法
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
注意: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
https://www.runoob.com/python3/python3-file-methods.html
<code># _*_ coding:utf-8 _*_
import sys,requests
from bs4 import BeautifulSoup
def DownloadImg(img_url,file_name):
\trq = requests.get(img_url)
\tf = open("E:\\\\Python3\\\\Images\\\"+ file_name,"wb")
\tf.write(rq.content)
\tf.flush()
if __name__ == '__main__':
\ttarget = 'http://www.gov.cn/xinwen/tupian/shengtai.htm'
\trq = requests.get(target)
\thtml = rq.text
\timgs = BeautifulSoup(html,'html.parser').find_all('img')
\tfor i in range(len(imgs)):
\t\timg_url = 'http://www.gov.cn' + imgs[i].get('src')
\t\tfile_name = str(i) +'.jpg'
\t\tDownloadImg(img_url,file_name)/<code>
这个程序会告警,但不影响下载,留待后面解决。
相关阅读:
閱讀更多 靠著南牆晒太陽 的文章