【Python】爬取百度图片和必应图片
爬取百度图片
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 13 21:32:25 2020
@author: ydc
"""import re
import requests
from urllib import error
from bs4 import BeautifulSoup
import osnum = 0
numPicture = 0
file = ''
List = []def Find(url, A):global Listprint('正在检测图片总数,请稍等.....')t = 0i = 1s = 0while t < 1000:Url = url + str(t)try:# 这里搞了下Result = A.get(Url, timeout=7, allow_redirects=False)except BaseException:t = t + 60continueelse:result = Result.textpic_url = re.findall('"objURL":"(.*?)",', result, re.S) # 先利用正则表达式找到图片urls += len(pic_url)if len(pic_url) == 0:breakelse:List.append(pic_url)t = t + 60return sdef recommend(url):Re = []try:html = requests.get(url, allow_redirects=False)except error.HTTPError as e:returnelse:html.encoding = 'utf-8'bsObj = BeautifulSoup(html.text, 'html.parser')div = bsObj.find('div', id='topRS')if div is not None:listA = div.findAll('a')for i in listA:if i is not None:Re.append(i.get_text())return Redef dowmloadPicture(html, keyword):global num# t =0pic_url = re.findall('"objURL":"(.*?)",', html, re.S) # 先利用正则表达式找到图片urlprint('找到关键词:' + keyword + '的图片,即将开始下载图片...')for each in pic_url:print('正在下载第' + str(num + 1) + '张图片,图片地址:' + str(each))try:if each is not None:pic = requests.get(each, timeout=7)else:continueexcept BaseException:print('错误,当前图片无法下载')continueelse:string = file + r'\\' + keyword + '_' + str(num) + '.jpg'fp = open(string, 'wb')fp.write(pic.content)fp.close()num += 1if num >= numPicture:returnif __name__ == '__main__': # 主函数入口############################### 这里加了点headers = {'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0','Upgrade-Insecure-Requests': '1'}A = requests.Session()A.headers = headers
###############################word = input("请输入搜索关键词(可以是人名,地名等): ")# add = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%E5%BC%A0%E5%A4%A9%E7%88%B1&pn=120'url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn='# 这里搞了下tot = Find(url, A)Recommend = recommend(url) # 记录相关推荐print('经过检测%s类图片共有%d张' % (word, tot))numPicture = int(input('请输入想要下载的图片数量 '))file = input('请建立一个存储图片的文件夹,输入文件夹名称即可')y = os.path.exists(file)if y == 1:print('该文件已存在,请重新输入')file = input('请建立一个存储图片的文件夹,)输入文件夹名称即可')os.mkdir(file)else:os.mkdir(file)t = 0tmp = urlwhile t < numPicture:try:url = tmp + str(t)# 这里搞了下result = A.get(url, timeout=10, allow_redirects=False)except error.HTTPError as e:print('网络错误,请调整网络后重试')t = t + 60else:dowmloadPicture(result.text, word)t = t + 60print('当前搜索结束,感谢使用')print('猜你喜欢')for re in Recommend:print(re, end=' ')
爬取必应图片
import requests
from lxml import etree
import re
import timeheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}# 保存图片
def save_img(url):img_name = url[-10:]name = re.sub('/', '', img_name) # img_name中出现/,将其置换成空try:res = requests.get(url, headers=headers)except OSError:print('出现错误,错误的url是:', url)else:with open('img/'+name, 'wb')as f:try:f.write(res.content)except OSError:print('无法保存,url是:', url)# 获取全部图片url
def parse_img(url):response = requests.get(url, headers=headers)response.encoding = response.apparent_encodingdata = response.content.decode('utf-8', 'ignore')html = etree.HTML(data)conda_list = html.xpath('//a[@class="iusc"]/@m')all_url = [] # 用来保存全部的urlfor i in conda_list:img_url = re.search('"murl":"(.*?)"', i).group(1)all_url.append(img_url)return all_url# 主函数
def main():for i in range(0, 120, 35):url = 'https://cn.bing.com/images/async?q=%E7%9F%BF%E6%B3%89%E6%B0%B4%E7%93%B6&first='+str(i)+'&count=35&relp=35&scenario=ImageBasicHover&datsrc=N_I&layout=RowBased&mmasync=1'img_data = parse_img(url)for img_url in img_data:save_img(img_url)print(img_url)time.sleep(10)if __name__ == '__main__':main()
【Python】爬取百度图片和必应图片相关推荐
- python爬取百度贴吧图片库_python爬取百度贴吧的图片2
今天看了一下beautifulsoup库的用法,把昨天的python爬取百度贴吧的图片1的代码更新成使用beautifulsoup库的函数来实现.用的还是不太熟练,但是感觉比正则表达式写起来容易了一些 ...
- Python爬取百度壁纸图片
Python爬取百度壁纸图片 #! /usr/bin/python -- coding: utf-8 -- @Author : declan @Time : 2020/05/31 16:29 @Fil ...
- 用python爬取动态网页上的图片(百度图片)
用python爬取动态网页上的图片(百度图片) 参考B站一个视频,视频链接: https://www.bilibili.com/video/BV1Va4y1Y7fK?share_source=copy ...
- python爬取帖吧图片实验报告,Python爬取百度贴吧图片
原标题:Python爬取百度贴吧图片 作者:MTbaby 来源:http://blog.csdn.net/mtbaby/article/details/70209729 描述:用Python爬去百度贴 ...
- python3爬虫爬取百度贴吧下载图片
python3爬虫爬取百度贴吧下载图片 学习爬虫时没事做的小练习. 百度对爬虫还是很友好的,在爬取内容方面还是较为容易. 可以方便各位读者去百度贴吧一键下载每个楼主的图片,至于是什么类型的图片,就看你 ...
- Python爬取京东商品评论和图片下载
Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...
- 教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)
教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中.(附源码) 代码展示: 保存在各自的文件夹中 美么? 让我们开始爬虫之路 开发环境 windows 10 python3. ...
- 使用python爬取斗图网的图片
使用python爬取斗图网的图片 以下是代码部分: # -*- coding: utf-8 -*- """ Created on Wed Apr 14 14:41:42 ...
- Python爬取百度图库
Python爬取百度图库 页面分析 通过Chrome 的开发者模式,我们可以很发现 百度图库是通过ajax 加载图片的. 每一次都会发送一个请求:https://image.baidu.com/sea ...
- python爬百度翻译-Python爬取百度翻译(利用json提取数据)
本篇文章给大家带来的内容是关于Python爬取百度翻译(利用json提取数据),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 工具:Python 3.6.5.PyCharm开发工具. ...
最新文章
- Failure [INSTALL_FAILED_ALREADY_EXISTS
- 【C++】类型转换简述:四种类型转换方式的说明及应用
- 处理数字_1_计算某列的最小/大值
- CPU单核多核区别【转载】
- 公司网络搭建及×××到公司配置
- oracle创建表空间、用户
- 201计算机基础知识,201年计算机应用基础备考练习题及答案
- 【转】通过IRQL看NT内核
- MySql Workbench表PK UN UQ B等字符的含义
- springboot starter的一个问题
- C#中IL反汇编工具的使用 其具体含义如下文
- 2.企业应用架构模式 --- 组织领域逻辑
- pandas dataframe统计填充空值大全
- 海外RPA企业盘点:谁是领导者,谁是挑战者?
- java sw_APDU格式详解
- 从零开始学写脚本(大麦网抢票 上)【第二天】
- C# 删除注册表信息
- 富爸爸实现财务自由七步骤
- Road Extraction by Deep Residual U-Net
- ASP.NET Web常用控件
热门文章
- python初级试题及答案
- 【从零开始学GIS再到精通GIS】ArcGIS中的绘图基操作(一)
- Mac修改shell版本(类型)
- RK平台之AI组件例程使用说明
- ipad无法充电怎么办_ipad无法充电无法开机怎么办 详细解决方法介绍【图文】
- TS 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }
- 2018第一次校队集训题解
- 美容行业竞争分析:2022年大型美容院成为市场主流
- 支持高性能计算场景,博云容器云打造智能算力引擎
- 一篇文章带你了解Linux