吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 940|回复: 0
收起左侧

[讨论] 优化爬取百度图库图片:可改地址,图片命名

[复制链接]
aa吴所谓 发表于 2020-7-25 16:06

import re
import sys
import urllib
import requests
import os

def get_onepage_urls(onepageurl):
"""获取单个翻页的所有图片的urls+当前翻页的下一翻页的url"""
if not onepageurl:
print('已到最后一页, 结束')
return[], ''
try:
html = requests.get(onepageurl).text
except Exception as e:
print(e)
pic_urls = []
fanye_url = ''
return pic_urls, fanye_url
pic_urls = re.findall('"objURL":"(.?)",', html, re.S)
fanye_urls = re.findall(re.compile(r'<a href="(.
)" class="n">下一页</a>'), html, flags=0)
fanye_url = 'http://image.baidu.com' + fanye_urls[0] if fanye_urls else ''
return pic_urls, fanye_url

def down_pic(pic_urls,path):
"""给出图片链接列表, 下载所有图片"""
for i, pic_url in enumerate(pic_urls):
try:
pic = requests.get(pic_url, timeout=15)
string = str(i + 1)+'.jpg'
with open(path+keyword+ str(i) + ".jpg", "ab") as f:
f.write(pic.content)
print('成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))
except Exception as e:
print('下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))
print(e)
continue

if name == 'main':
keyword = input("请输入搜索关键词:")  # 关键词, 改为你想输入的词即可, 相当于在百度图片里搜索一样
url_init_first = r'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1497491098685%5E00_1519X735&word='
url_init = url_init_first + urllib.parse.quote(keyword, safe='/')
all_pic_urls = []
onepage_urls, fanye_url = get_onepage_urls(url_init)
all_pic_urls.extend(onepage_urls)

fanye_count = 0  # 累计翻页数
n=input("请输入翻页数:")
if os.path.isdir("F:\Python爬取\图片/"+keyword) != True:#如果保存的路径不存在
    os.makedirs(r"F:\Python爬取\图片/"+keyword)#如果不存在。我们将创立这个路径
path = "F:\Python爬取\图片/"+keyword+"/"
while fanye_count<int(n):
    onepage_urls, fanye_url = get_onepage_urls(fanye_url)
    fanye_count += 1
    print('第%s页' % fanye_count)
    if fanye_url == '' and onepage_urls == []:
        break
    all_pic_urls.extend(onepage_urls)

down_pic(list(set(all_pic_urls)),path)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 14:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表