用python下载百度图片

百度图片下载(Python源码)

import requests, re, os
from multiprocessing.dummy import Pool as ThreadPool
import time

name = input("请输入搜索关键词:")
nums = input("请输入下载数量(张):")
header = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Cache-Control": "max-age=0",
"Connection": "keep-alive",
"Cookie": "BDqhfp=%E5%A5%A5%E7%89%B9%E6%9B%BC%26%26-10-1undefined%26%260%26%261; winWH=%5E6_1536x754; BDIMGISLOGIN=0; BIDUPSID=A68474520A843D74F4D197D91FC6674D; PSTM=1605438651; BAIDUID=A68474520A843D74109B3A39834DE6E3:FG=1; __yjs_duid=1_dc5c3b80ae8c802fa0c05ddec5e11c5b1609062148833; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDSFRCVID=TfuOJeC62lUeG-OrpXQCt0E1Re9TUTOTH6ao6zst8FfTm8ZQJa0qEG0PoM8g0Ku-K11bogKKymOTHr_F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=JbuJVIP-JDvbfP0k247oh4-qMfQXatcKa55tsJOOaCvxe45Oy4oTj6Dj3foxexRH-NbI5--M3CjCeDT23qOc3MvB-fPqhJJJfgch-nCyyfjkHDJlQft20-4IeMtjBbLLWbCD3J7jWhvBDq72yb5rQlRX5q79atTMfNTJ-qcH0KQpsIJM5-DWbT8IjH62btt_JRue_IoP; BDSFRCVID_BFESS=TfuOJeC62lUeG-OrpXQCt0E1Re9TUTOTH6ao6zst8FfTm8ZQJa0qEG0PoM8g0Ku-K11bogKKymOTHr_F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=JbuJVIP-JDvbfP0k247oh4-qMfQXatcKa55tsJOOaCvxe45Oy4oTj6Dj3foxexRH-NbI5--M3CjCeDT23qOc3MvB-fPqhJJJfgch-nCyyfjkHDJlQft20-4IeMtjBbLLWbCD3J7jWhvBDq72yb5rQlRX5q79atTMfNTJ-qcH0KQpsIJM5-DWbT8IjH62btt_JRue_IoP; H_PS_PSSID=33423_33478_33404_31254_33284_33287_33414_33318_22160_33389_33370; delPer=0; PSINO=2; BAIDUID_BFESS=35C0613FFE7DAD29930274CA715488D4:FG=1; BA_HECTOR=210l2l85018h8ha1rt1fvsh240q; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; cleanHistoryStatus=0; indexPageSugList=%5B%22%E5%A5%A5%E7%89%B9%E6%9B%BC%22%2C%22%E8%8C%83%E5%86%B0%E5%86%B0%22%2C%22%E6%9C%BA%E6%A2%B0%E7%BA%AA%E5%85%832b%E6%98%AF%E6%88%90%E4%BA%BA%E6%B8%B8%E6%88%8F%E5%90%97%22%2C%22%E8%B5%B5%E4%B8%BD%E9%A2%96%22%2C%22%E6%98%8E%E6%98%9F%E5%B0%84%E7%AE%AD%22%2C%22%E6%98%8E%E6%98%9F%22%2C%22%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80%E5%88%98%E5%A4%87%E8%8B%B1%E9%9B%84%E7%9A%AE%E8%82%A4%E5%9B%BE%E7%89%87%E9%AB%98%E6%B8%85%22%2C%22%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80%E9%BB%84%E5%BF%A0%E8%8B%B1%E9%9B%84%E7%9A%AE%E8%82%A4%E5%9B%BE%E7%89%87%E9%AB%98%E6%B8%85%22%2C%22%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80%E8%A5%BF%E6%96%BD%E8%8B%B1%E9%9B%84%E7%9A%AE%E8%82%A4%E5%9B%BE%E7%89%87%E9%AB%98%E6%B8%85%22%5D; BDRCVFR[tox4WRQ4-Km]=mk3SLVN4HKm; BDRCVFR[CLK3Lyfkr9D]=mk3SLVN4HKm; userFrom=null; ab_sr=1.0.0_YTk2M2EyNmI4YjRlNjA0MTQwODllZDNlODgxZmVlYTA3Njg0YjFjNWExMGUyOWI3YTRiNGIxYjliMzg1NjBmZWNiMWQxYmU1NzQ0ZmZhM2FjZjM1OTkxODlkNjI2MTU3",
"Host": "image.baidu.com",
"Referer": "https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1610500687592_R&pv=&ic=&nc=1&z=&hd=&latest=&copyright=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&sid=&word=%E8%8C%83%E5%86%B0%E5%86%B0",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-User": "?1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75"}
if not os.path.exists(name):
    os.mkdir(name)
# pages = nums // 30 + 1
# for i in range(0, pages):
pages = 0
i = -1
x = 0
urls = []
n = 0
while True:
    if x == 1:
        break
    i += 1
    url = "https://image.baidu.com/search/acjson?tn=resultjson_com&logid=8134539372934273466&ipn=rj&ct=201326592&is=&fp=result&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=&latest=&copyright=&word={}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn={}&rn=30&gsm=1e&1610689229504="
    page_url = url.format(name, name, i * 30)
    res = requests.get(page_url, headers=header)
    images_url = re.findall('"thumbURL":"(.*?)"', res.text)
    for image_url in images_url:
        pages += 1
        if pages > int(nums):
            x = 1
            break
        if "\\" in image_url:
            image_url = image_url.replace("\\", "")
        n += 1
        urls.append((image_url, n))


def downloader(urls):
    image_url, n = urls
    print("第{}张下载中".format(n), end="")
    image = requests.get(image_url)
    filename = name + "/{}.jpg".format(n)
    with open(filename, "wb") as f:
        f.write(image.content)
    time.sleep(0.5)
    print(end="\r")
    print("第{}张下载完成".format(n))


if __name__ == '__main__':
    pool = ThreadPool(12)
    results = pool.map(downloader, urls)
    pool.close()
    pool.join()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值