google、baidu、yahoo、bing这些搜索引擎网站的图片抓取方法汇总
icrawler基本用法
内置爬虫
该框架包含6个内置的图像抓取工具。
-
谷歌
-
bing
-
百度
-
Flickr
-
通用网站图片爬虫(greedy)
-
UrlList(抓取给定URL列表的图像)
以下是使用内置抓取工具的示例。 搜索引擎抓取工具具有相似的界面。
第一步:
1 | pip install icrawler |
第二步:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | from icrawler.builtin import BaiduImageCrawler from icrawler.builtin import BingImageCrawler from icrawler.builtin import GoogleImageCrawler """ parser_threads:解析器线程数目,最大为cpu数目 downloader_threads:下载线程数目,最大为cpu数目 storage:存储地址,使用字典格式。key为root_dir keyword:浏览器搜索框输入的关键词 max_num:最大下载图片数目 """ #谷歌图片爬虫 google_storage = { 'root_dir' : '/Users/suosuo/Desktop/icrawler学习/google' } google_crawler = GoogleImageCrawler(parser_threads = 4 , downloader_threads = 4 , storage = google_storage) google_crawler.crawl(keyword = 'beauty' , max_num = 10 ) #必应图片爬虫 bing_storage = { 'root_dir' : '/Users/suosuo/Desktop/icrawler学习/bing' } bing_crawler = BingImageCrawler(parser_threads = 2 , downloader_threads = 4 , storage = bing_storage) bing_crawler.crawl(keyword = 'beauty' , max_num = 10 ) #百度图片爬虫 baidu_storage = { 'root_dir' : '/Users/suosuo/Desktop/icrawler学习/baidu' } baidu_crawler = BaiduImageCrawler(parser_threads = 2 , downloader_threads = 4 , storage = baidu_storage) baidu_crawler.crawl(keyword = '美女' , max_num = 10 ) |
注:google页面升级,上面方法暂时不可用
GreedyImageCrawler
如果你想爬某一个网站,不属于以上的网站的图片,可以使用贪婪图片爬虫类,输入目标网址。
1 2 3 4 5 6 | from icrawler.builtin import GreedyImageCrawler storage = { 'root_dir' : '/Users/suosuo/Desktop/icrawler学习/greedy' } greedy_crawler = GreedyImageCrawler(storage = storage) greedy_crawler.crawl(domains = 'http://desk.zol.com.cn/bizhi/7176_88816_2.html' , max_num = 6 ) |
UrlListCrawler
如果你已经拥有了图片的下载地址,可以直接使用UrlListCrawler,为了高效抓取,可以使用多线程方式下载,快速抓取目标数据。
1 2 3 4 5 6 7 8 | from icrawler.builtin import UrlListCrawler storage = { 'root_dir' : '/Users/suosuo/Desktop/icrawler学习/urllist' } urllist_crawler = UrlListCrawler(downloader_threads = 4 , storage = storage) #输入url的txt文件。 urllist_crawler.crawl( 'url_list.txt' ) |
详细:https://www.ctolib.com/topics-125069.html
google抓取
我们在上面提到google图片无法抓取,然后我们接着往下面看看方法。
链接:https://pan.baidu.com/s/1gunLzHq4B-d-oPorzHiU3g
提取码:e5na
先去我的网盘下载到本地,接着看目录结构,注意抓取goole用的是 selenium,这个包安装方法及环境设置需要自己搞定!!!
运行看看页面,是可视化的哦
当然,这个你还有什么看不懂的直接到github上看看,https://github.com/sczhengyabin/Image-Downloader,亲测可用。
yahoo抓取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | mport requests import re import os class Yahoo_spider(): def __init__( self ): self .headers = { "user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36" , } self .keyword = "诈骗信息" self .path = '' self .count = 0 self .max_page = 700 def start_one_parse( self ): """该请求为第一页静态数据""" print ( '开始抓取第1页' ) url = 'https://images.search.yahoo.com/search/images;_ylt=Awr9FqqfDqVeFy4AT7SJzbkF?p=' + self .keyword + '&fr2=p%3As%2Cv%3Ai' response = requests.get(url = url,headers = self .headers) pic_list = re.findall(r 'data-src=\'(.*?)\'' , response.text, re.S) self .save_pic(pic_list) def start_two_parse( self ): """请求第二页为动态接口数据""" for page in range ( 61 , self .max_page, 61 ): print ( '开始抓取第{}页' . format (page / / 61 + 1 )) url = "https://images.search.yahoo.com/search/images?fr2=p%3As%2Cv%3Ai&o=js&p=" + self .keyword + "&tmpl=&nost=1&b=" + str (page) + "&iid=Y.2&ig=0afd1ebeedac47e896000000003f9432&rand=1587876278637" response = requests.get(url = url, headers = self .headers).json()[ 'html' ] pic_list = re.findall(r 'data-src=\'(.*?)\'' , response, re.S) self .save_pic(pic_list) def save_pic( self ,pic_list): """保存图片""" for pic in pic_list: try : self .count + = 1 url = pic.replace( '&w=300&h=300' , '&w=10000&h=10000' ) #处理尺寸 pic_path = os.path.join( self .path, 'yahoo_' + str ( self .count) + '.jpg' ) response = requests.get(url = url,headers = self .headers,timeout = 10 ) with open (pic_path, 'wb' ) as f: f.write(response.content) print ( '序号:{},图片链接;{},保存成功' . format ( self .count,url)) except : pass if __name__ = = '__main__' : spider = Yahoo_spider() spider.start_one_parse() spider.start_two_parse() |
yahoo没什么难度,看看代码很简单就懂了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现