爬取Google网站的图片

爬取Google图片利器
介绍了一款用于从Google搜索引擎批量下载图片的工具,支持指定图片分辨率及数量,详细步骤包括安装配置、参数设置及常见问题解决,如使用chromedriver应对下载数量限制。

爬取Google搜索引擎图片的工具,工具链接如下:

https://github.com/hardikvasa/google-images-download

该工具的好处是可以指定下载图片分辨率以及下载图片的张数

    1.使用:

        (a)clone 项目到本地

        (b)进行相关配置:

           (1)pip install google_images_download

           (2)cd google_images_download

             (3)   sudo python setup.py install

        (c) cd google-images-download 

        (d) python google_images_download.py -k makeup -l 500 -s '>4MP'

       附录:

       笔者使用的是-k,-l,-s这三个参数传入.py文件,也可以选择其它参数。

       参数查询文档如下:

       https://google-images-download.readthedocs.io/en/latest/arguments.html

   2.可能遇到的问题:

       (a)参数设置问题:

            1.错误:-l 500  (下载期望是500张,大于默认100),错误如下图

           2.解决办法:

               (a)下载chrome browser 对应的chromedriver ,下载链接如下:

                   http://chromedriver.storage.googleapis.com/index.html 

                   下载对应的chromedriver,笔者的chrome browser 版本是78.0.3904.108(正式版本) (64 位),下载的          chromedriver  版本是78.0.3904.105 ,对应的chromedriver  版本截图如下,由于本地是mac电脑,所以选择箭头所指的文件:

              (b)将chromedriver _mac64.zip下载到本地之后解压,解压后截图如下:

              (c)将解压后的chromedriver,copy到/usr/local/bin/目录下

              (d) 运行python google_images_download.py -k makeup -l 500 -s '>4MP' -cd /usr/local/bin/chromedriver  

 

 

 

 

 

 

为了从 Google 图片中抓取图像,可以通过 Python 编写一个爬虫程序实现这一目标。该过程包括模拟浏览器行为、解析动态加载的页面内容以及处理反爬虫机制。 ### 使用 Selenium 模拟浏览器行为 Google 图片搜索结果是通过 JavaScript 动态加载的,因此直接使用 `requests` 库无法获取完整的页面内容。可以采用 `Selenium` 和 `chromedriver` 来模拟真实浏览器操作,从而获取完整的 HTML 内容。 ```python from selenium import webdriver from selenium.webdriver.common.by import By import time # 配置 chromedriver 路径 driver = webdriver.Chrome(executable_path='path/to/chromedriver') # 打开 Google 图片搜索页面 search_query = 'example' driver.get(f'https://www.google.com/search?q={search_query}&tbm=isch') # 滚动页面以加载更多图片 for _ in range(5): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(2) # 获取所有图片链接 image_elements = driver.find_elements(By.XPATH, '//img[@class="rg_i Q4LuWd"]') image_urls = [img.get_attribute('src') for img in image_elements if img.get_attribute('src')] # 关闭浏览器 driver.quit() ``` ### 下载图片并保存到本地 在获取图片链接后,可以使用 `requests` 库将图片下载到本地: ```python import requests for i, url in enumerate(image_urls[:10]): # 下载前10张图片 try: response = requests.get(url, timeout=10) with open(f'image_{i}.jpg', 'wb') as f: f.write(response.content) except Exception as e: print(f"Error downloading image {url}: {e}") ``` ### 绕过反爬虫机制 Google 对自动化爬虫有较强的检测机制,可以通过以下方式降低被封禁的风险: - **随机等待时间**:在每次请求之间加入随机延迟。 - **设置 User-Agent**:模拟不同的浏览器和操作系统组合。 - **使用代理 IP**:通过轮换 IP 地址避免单一 IP 被封锁。 示例代码如下: ```python from selenium.webdriver.chrome.options import Options import random import time chrome_options = Options() chrome_options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{random.randint(80, 95)}.0.4606.81 Safari/537.36') driver = webdriver.Chrome(options=chrome_options) driver.get('https://www.google.com/search?q=example&tbm=isch') time.sleep(random.uniform(2, 5)) ``` ### 注意事项 - **chromedriver 版本匹配**:确保使用的 `chromedriver` 与本地安装的 Chrome 浏览器版本一致[^3]。 - **遵守服务条款**:爬取数据时应遵守 Google 的服务条款,避免大规模高频访问导致 IP 被封。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值