当前位置:   article > 正文

Python爬虫:简易图片爬取_python怎么爬取图片

python怎么爬取图片

一:搭建爬虫框架

1:打开pycharm,新建一个项目。

2:导入此项目所需要的库:

 import os  # 操作系统
 import re  # 正则表达式
 import requests  # http客户端库

3:获取网站源代码:

def get_html(url, headers, params):
    response = requests.get(url, headers=headers, params=params)
    # 设置源代码的编码方式
    response.encoding = "utf-8"
    # 利用循环判断网页是否能打开
    if response.status_code == 200:
        return response.text
    else:
        print("网址源码获取错误")

4:提取图片原地址:

def parse_pic_url(html):
    result = re.findall('thumbURL":"(.*?)"', html, re.S)
    return result

5:获取图片二进制源码:

def get_pic_content(url):
    response = requests.get(url)
    return response.content

6:创建文件夹对图片进行保存:

def create_fold(fold_name):
    # 异常处理
    try:
        os.mkdir(fold_name)
    except:
        print("文件夹已存在")

7:保存图片:

def create_fold(fold_name):
    # 异常处理
    try:
        os.mkdir(fold_name)
    except:
        print("文件夹已存在")

8:定义main函数对get_html函数进行调用:

def main():
    #输入文件夹名字
    fold_name = input("请输入图片名:")
    #输入你要抓取的数量
    page_num = input("请输入你要抓取的页数:")
    #调用函数,创建文件夹
    create_fold(fold_name)
    #定义图片名字
    pic_name = 0
    #构建循环.控制页面
    for i in range(int(page_num)):
        url = 
        headers = {}
        params = {}
        
        html = get_html(url, headers, params)
        result = parse_pic_url(html)
        # 使用for循环遍历列表
        for item in result:
            # 调用函数,获取二进制源码
            pic_content = get_pic_content(item)
            save_pic(fold_name, pic_content, pic_name)
            pic_name += 1
            print("正在保存第" + str(pic_name))
 
    # 执行main函数
    if __name__ == '__main__':
        main()

下面是项目的源代码:

# 导入所需要的库
import os  # 操作系统
import re  # 正则表达式
import requests  # http客户端库
# 获取网络源代码
def get_html(url, headers, params):
    response = requests.get(url, headers=headers, params=params)
    # 设置源代码的编码方式
    response.encoding = "utf-8"
    # 利用循环判断网页是否能打开
    if response.status_code == 200:
        return response.text
    else:
        print("网址源码获取错误")
# 解析提取图片的源地址
def parse_pic_url(html):
    result = re.findall('thumbURL":"(.*?)"', html, re.S)
    return result
# 获取图片二进制源码
def get_pic_content(url):
    response = requests.get(url)
    return response.content
# 定义一个文件夹保存
def create_fold(fold_name):
    # 异常处理
    try:
        os.mkdir(fold_name)
    except:
        print("文件夹已存在")
# 保存图片
def save_pic(fold_name,content,pic_name):
    with open(fold_name + "/" + str(pic_name)+".jpg","wb") as f:
        f.write(content)
        f.close()
 
#定义main函数调用get_html函数
def main():
    #输入文件夹名字
    fold_name = input("请输入图片名:")
    #输入你要抓取的数量
    page_num = input("请输入你要抓取的页数:")
    #调用函数,创建文件夹
    create_fold(fold_name)
    #定义图片名字
    pic_name = 0
    #构建循环.控制页面
    for i in range(int(page_num)):
        url:
        headers = {}
        params = {}
        html = get_html(url, headers, params)
        # print(html)
        result = parse_pic_url(html)
 
        # 使用for循环遍历列表
        for item in result:
            # 调用函数,获取二进制源码
            pic_content = get_pic_content(item)
            save_pic(fold_name, pic_content, pic_name)
            pic_name += 1
            print("正在保存第" + str(pic_name))
 
    # 执行main函数
    if __name__ == '__main__':
        main()

二:图片爬取

打开浏览器搜索你想要爬取的图片,这里以大熊猫为例

在空白处单击鼠标右键,出现选项,这里我们选择检查,会出现以下界面。

这里我们点击网络,选择Fetch/XHR,然后刷新一下页面

找到acjson开头的这个,点进去,选择标头找到请求URL,复制粘贴进代码中。

对该页面往下翻,并复制以下信息粘贴在header中(注:粘贴时优先打三对双引号注释后再粘贴,这样能够最高程度避免粘贴胡乱换行的情况)

然后将代码整理好,再复制负载内容,粘贴进代码里(注:这里要删除没有内容的名称)

将这一部分代码也整理好,就可以爬取图片了,

以下是运行结果

可以看到,我们的文件夹里已经有图片了。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/446057
推荐阅读
相关标签
  

闽ICP备14008679号