Python抓取网络照片

先上代码再做讲解

# 编写程序实现快速下载照片并保存到相应的目录
# 针对的网站主要是百度的图片
# -*- coding:utf8 -*-
import os
import re
from urllib import parse
import requests


class BaiduImageSpider:
    def __init__(self):
        self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&word={}'
        self.headers = {'User-Agent': 'Mozilla/4.0'}

    def get_image(self, url, word):
        # 使用requests获取响应对象
        res = requests.get(url, headers=self.headers)
        # 改变编码格式
        res.encoding = 'utf-8'
        # 获取网页
        html = res.text
        print(html)
        # 正则解析
        pattern = re.compile('"hoverURL":"(.*?)"', re.S)
        img_link_list = pattern.findall(html)
        # 保存图片链接
        print(img_link_list)
        # 创建对应目录保存图片
        directory = 'D:/Python/Py_Scrapy/chap_2/image/{}/'.format(word)
        # 如果目录不在则创建
        if not os.path.exists(directory):
            os.makedirs(directory)

        # 计数添加
        i = 1
        for img_link in img_link_list:
            filename = '{}{}_{}.jpg'.format(directory, word, i)
            self.save_image(img_link, filename)
            i += 1

    # 保存函数
    def save_image(self, img_link, filename):
        html = requests.get(url=img_link, headers=self.headers).content
        with open(filename, 'wb') as f:
            f.write(html)
        print('下载成功')

    def run(self):
        word = input('您想要谁的照片')
        word_parse = parse.quote(word)
        url = self.url.format(word_parse)
        self.get_image(url, word)


if __name__ == '__main__':
    spider = BaiduImageSpider()
    spider.run()

本次所写的程序主要是基于爬虫实现对网页照片的抓取 这里主要针对的网址是百度图片

基本步骤主要有 

初始化相关信息


    def __init__(self):
        self.url = 'https://image.baidu.com/search/flip?tn=baiduimage&word={}'
        self.headers = {'User-Agent': 'Mozilla/4.0'}

发起网络响应 获取网页基本信息

解析网页 获取图片链接

这里将发起网络请求和解析网页获取图片链接都写在了get_html方法当中


    def get_image(self, url, word):
        # 使用requests获取响应对象
        res = requests.get(url, headers=self.headers)
        # 改变编码格式
        res.encoding = 'utf-8'
        # 获取网页
        html = res.text
        print(html)
        # 正则解析
        pattern = re.compile('"hoverURL":"(.*?)"', re.S)
        img_link_list = pattern.findall(html)
        # 保存图片链接
        print(img_link_list)
        # 创建对应目录保存图片
        directory = 'D:/Python/Py_Scrapy/chap_2/image/{}/'.format(word)
        # 如果目录不在则创建
        if not os.path.exists(directory):
            os.makedirs(directory)

        # 计数添加
        i = 1
        for img_link in img_link_list:
            filename = '{}{}_{}.jpg'.format(directory, word, i)
            self.save_image(img_link, filename)
            i += 1


列表保存相关的图片链接 在通过format方法拼凑成图片文件

在对网页解析处理后 又单独书写了一个保存方法 来完成对图片的保存


    # 保存函数
    def save_image(self, img_link, filename):
        html = requests.get(url=img_link, headers=self.headers).content
        with open(filename, 'wb') as f:
            f.write(html)
        print('下载成功')

 

注意:这里的图片文件的保存是二进制格式保存的

以上就是相关的函数处理过程 最后整合处理运行即可

你可能感兴趣的:(python,网络,后端,网络爬虫)