|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import requests
- from urllib.parse import urlencode
- import re
- import os
- import time
- #计划将图片都保存在E盘叫“百度图片”的文件夹下
- filelist = os.listdir(path='E:\\')
- if ('百度图片') not in filelist:
- os.mkdir("E:\\百度图片")
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363'
- }
- name = input("请输入您需要爬取的图片信息:")
- filelist = os.listdir(path='E:\\百度图片')
- #检查在百度图片文件夹下是否存在以搜索内容为名的文件夹
- #若存在,则说明以前曾爬取过相关内容,不再新建以此搜索内容命名的文件夹
- #若不存在,则说明以前未曾搜索过相关内容,新建文件夹以保存此次爬取的图片
- if (name) not in filelist:
- os.mkdir("E:\\百度图片/%s"%name)
- before_path = "E:/百度图片/" + name +'/'
- times = time.gmtime()
- t=str(time.mktime(times))
- #通过输入的需要搜索的内容拼接出百度的相关内容的搜索链接
- def get_url(name):
- bef_url = 'https://image.baidu.com/search/index?'
- data = {
- 'tn': 'resultjson_com',
- 'logid': '7364932782014356645',
- 'ipn': 'rj',
- 'ct': '201326592',
- 'is': '',
- 'fp': 'result',
- 'queryWord': '二次元图片',
- 'cl': '2',
- 'lm': '-1',
- 'ie': 'utf-8',
- 'oe': 'utf-8',
- 'adpicid': '',
- 'st': '',
- 'z': '',
- 'ic': '',
- 'hd': '',
- 'latest': '',
- 'copyright': '',
- 'word': '二次元图片',
- 's': '',
- 'se': '',
- 'tab': '',
- 'width': '',
- 'height': '',
- 'face': '',
- 'istype': '',
- 'qc': '',
- 'nc': '',
- 'fr': '',
- 'expermode': '',
- 'force': '',
- 'pn': '30',
- 'rn': '30',
- 'gsm': '1e',
- '1611387183889': ''
- }
- data['word'] = name
- data['word'] = name
- url = bef_url + urlencode(data)
- return url
- url = get_url(name)
- #将链接传递给get_add函数,该函数将会取得前三十张图片的连接
- def get_add(url):
- response = requests.get(url=url,headers=headers)
- if response.status_code == requests.codes.ok:
- html = response.text
- regular = re.compile('"middleURL":"(.*?)"')
- result = regular.findall(html)
- else :
- result = False
- return result
- result = get_add(url)
- if result == False:
- print("搜索出错!!!\n请重试")
- elif not result:
- print("您搜索的内容不存在!!!")
- os.rmdir("E:\\百度图片/%s"%name)
- else:
- #下载图片并保存
- while(result):
- url = result.pop()
- response = requests.get(url=url,headers=headers)
- html = response.content
- name = url.split('/')[-1]
- path = before_path + t + name
- with open(path,'wb') as f:
- f.write(html)
复制代码
在一个大佬的指导下写了这个爬百度图的程序,有大佬能优化一下,或者指出我的不足就再好不过了 |
|