python-从零开始的图片爬取

一、搭建爬虫框架

1、创建项目

①打开pycharm

②新建一个项目

创建完成后,就可以正式开始代码编写了

不同版本python都可以使用此代码,我此处使用的是从anaconda中创建的虚拟环境中下载的3.6版本的python。关于如何创建虚拟环境,可以参考Anaconda如何构建虚拟环境

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 save_pic(fold_name,content,pic_name):
    with open(fold_name + "/" + str(pic_name)+".jpg","wb") as f:
        f.write(content)
        f.close()

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

#定义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()

        至此,整个图片爬取程序框架便完成了。

二、图片爬取

1、为框架中导入数据

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

        鼠标右键单击该页面任意位置点击检查按钮,或者直接按f12

        选择Fetch/XHR,并刷新界面一直往下拉,你会发现acjson文件正在不断增加,点击其中一个acjson文件选择标头,复制其中的url铁道代码之中

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

在粘贴完成后在左边的名称上打上双引号,在右边信息同样加上双引号,有双引号的信息使用单引号,避免引号冲突,且每边有且只有一对引号

回到网页中点击负载并复制框中内容贴到params中

同样在两边打上双引号,并删除无内容的名称

原数据pn中为30,这里是修改后的

完成这一切后就可以正常爬取图片了。

本期教程到此结束,喜欢的点个赞吧。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏怜月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值