有时我们需要构建自己的数据集来训练模型,但往往缺乏大量数据。这时就需要从搜索引擎(如谷歌、百度、必应)上爬取图片来创建数据集。虽然编写爬虫程序看似复杂,但我们可以利用工具简化这一过程。iCrawler就是这样一款工具,它可以帮助我们轻松完成图片爬取任务,而无需深入了解复杂的编程知识。
访问iCrawler的官方文档:https://icrawler.readthedocs.io/en/latest/
iCrawler是一款轻量级的网络爬虫框架,采用模块化设计,使得使用和扩展更加方便。它支持多种数据类型(包括图片、视频和文本)的抓取,并且相比功能强大的Scrapy,iCrawler更加小巧灵活。此外,iCrawler还提供了多线程、异常处理和线程调度等功能,支持从主流搜索引擎(如谷歌、百度、必应)上抓取图片。
可以通过以下两种方式安装iCrawler:
pip安装
bash
pip install icrawler
conda安装
bash
conda install -c hellock icrawler
我们将通过示例演示如何使用iCrawler从百度抓取图片。对于其他搜索引擎(如必应和谷歌),操作方法类似。
```python from icrawler.builtin import BaiduImageCrawler
saveimgdir = r"D:dataseticrawler_dataset"
baiducrawler = BaiduImageCrawler(storage={"rootdir": saveimgdir})
baiducrawler.crawl(keyword="二哈", maxnum=10) ```
在抓取过程中,控制台会显示一些信息。最终抓取到的图片会保存在指定目录下。需要注意的是,有些图片可能不符合要求,用户可以根据需要进行后处理,剔除不必要的图片。
在抓取图片时,可以通过设置参数来过滤和筛选图片。例如,可以设置线程数来提高下载速度,或者设置过滤条件来排除不需要的图片。
```python baiducrawler = BaiduImageCrawler( feederthreads=1, parserthreads=1, downloaderthreads=5, storage={"rootdir": saveimg_dir} )
filters_config = dict( type="animated", color="orange" )
baiducrawler.crawl(keyword="二哈", filters=filtersconfig, offset=0, max_num=10) ```
如果需要爬取Google或其他海外网站的数据,建议使用代理服务器。iCrawler提供了两种代理设置方式,可以通过继承Crawler类来自定义代理池。
python
class CustomCrawler(BaiduImageCrawler):
def set_proxy_pool(self):
self.proxy_pool = ProxyPool()
self.proxy_pool.default_scan(region='overseas', expected_num=10, out_file='proxies.json')
除了使用iCrawler提供的现成工具外,用户还可以根据自身需求自定义爬虫。具体实现方法可以参考iCrawler的官方文档。
希望这些信息对你有所帮助!如果你有任何疑问或需要进一步的帮助,请随时联系我。