python 图片抓取

写个爬虫,抓点百度图片。本程序基于python3编写,可根据关键词抓取百度图片


下载的图片:



代码:

import json
import os
import random
import time
import re
import easygui
from urllib import request, parse


# 图片保存路径
PATH = '图片/百度/'
os.makedirs(PATH, exist_ok=True)


# 获取每页数据
def get_page_data(keyword, page=1, charset='utf-8'):
    pn = page * 30  # 每页图片数
    gsm = hex(pn)  # 每页图片数16进制表示
    keyword = parse.quote(keyword)  # 关键词url转码
    url = 'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=' + keyword + '&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&word=' + keyword + '&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&fr=&pn=' + str(pn) + '&rn=30&gsm=' + str(gsm)
    req = request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')
    return request.urlopen(req).read().decode(charset)


# 搜索图片
def search(keyword, pages=1):
    for page in range(1, pages + 1):
        page_data = ''
        try:
            page_data = get_page_data(keyword, page)
        except Exception as e:
            print(e)
        if not page_data:
            continue
        obj = json.loads(page_data)  # 将数据转换为json对象
        images = obj['data']  # 获取图片列表
        for image in images:
            if image:
                src = image['thumbURL']  # 图片地址
                suffix = src[src.rfind('.'):]  # 图片后缀
                title = re.sub('\W+', '', image['fromPageTitleEnc']) # 图片标题
                image_path = PATH + title + str(int(time.time())) + str(random.randint(10000, 99999)) + suffix  # 文件名
                req = request.Request(src)
                req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')
                req.add_header('Referer', 'http://image.baidu.com/i?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&word=%E4%BA%A4%E9%80%9A&ie=utf-8')
                try:
                    image_data = request.urlopen(req).read()
                    f = open(image_path, 'wb')
                    f.write(image_data)
                    f.close()
                    print(src + ' 下载完成')
                except Exception as e:
                    print(e)


__keyword, __pages = easygui.multenterbox('请输入搜索信息', '图片下载器', ['关键词', '下载页数'])
search(__keyword, int(__pages))


注:图形框需要安装easygui

顺便用pyinstaller编译个exe程序,源码及exe压缩包下载地址:http://download.csdn.net/detail/u013314786/9721220

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值