python爬取图片

Posted lightbc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬取图片相关的知识,希望对你有一定的参考价值。

Python 抓取网页中的图片

  Ps:目标网站为千图网,如有需求,请购买正版,该项目仅用于学习交流使用。

分析目标

1.分析网页的请求信息,将请求头加上,主要是防止反爬。这里需要注意的是它的content-type。

 

2.分析元素内容,获取相应的目标。

 

 

3.需要分析一下url

 

 

 

 

代码工程

  分析号目标后就可以着手写了

python代码:

import requests
from lxml import etree
import os


# 抓取图片
class Spider_qt(object):
    def __init__(self, pageNo, pageCount):
        # 反扒
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/74.0.3729.131 Safari/537.36",
            "Referer": "https://www.58pic.com/"
        }
        self.get_page(pageNo, pageCount)

    # 获取页面
    def get_page(self, pageNo, pageCount):
        for i in range(pageNo, pageNo + pageCount):
            print("===============================开始抓取第%s页===============================" % i)
            r = requests.get("https://www.58pic.com/piccate/53-0-0-p" + str(i) + ".html", headers=self.headers)
            page = etree.HTML(r.content.decode(\'gbk\'))
            self.get_images(page)

    # 获取图片
    def get_images(self, page):
        # xpath解析
        image_url = page.xpath("///div[@class=\'image-box\']/img/@data-original")
        image_alt = page.xpath("//div[@class=\'image-box\']/img/@alt")
        for url, alt in zip(image_url, image_alt):
            url = "http:" + url
            file_name = alt + ".jpg"
            save_path = "F:\\\\python\\\\spider\\\\images\\\\qt\\\\"
            if not os.path.exists(save_path):
                os.makedirs(save_path)
            file_save_path = save_path + file_name
            r = requests.get(url, headers=self.headers)
            print("正在抓取:" + file_name)
            try:
                with open(file_save_path, \'wb\') as f:
                    f.write(r.content)
            except:
                print("===============================抓取错误===============================")


def main():
    pageNo = int(input("请输入下载开始页:"))
    pageCount = int(input("请输入需要下载的页数:"))
    Spider_qt(pageNo, pageCount)


if __name__ == \'__main__\':
    main()

效果:

Ps:需要注意的是如果没有requests和lxml需要下载的

以上是关于python爬取图片的主要内容,如果未能解决你的问题,请参考以下文章

Python如何爬取百度图片?

scrapy主动退出爬虫的代码片段(python3)

python爬取MM图片

python爬取百度图片代码

python小白学习记录 多线程爬取ts片段

想用python爬取网页上的图片,但无法用select()方法定位图片的源地址?