当前位置: 首页 > news >正文

360图片搜索爬虫|批量爬取搜索图片

 360图片搜索功能爬虫,根据搜索内容批量获取图片,很简单就能实现

 结尾附实现代码

 一、抓包与分析

直接在360搜索处点击回车即可抓到

GET请求包  https://image.so.com/i?q=天空&inact=0

q——搜索框输入的内容

搜索包响应结果 1

搜索包响应结果展示 2 

在响应中,这一部分的的数据便是图片的下载地址和分辨率

可以看到搜索结果的相关数据

title——unicode编码后的标题

img——图片链接

width、hight——分辨率

二、实现代码 

代码运行效果1

代码运行效果2

import requests
import json
import os
from bs4 import BeautifulSoup


def fetch_image_urls(url, headers):
    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        print(f"请求失败,状态码:{response.status_code}")
        return []

    soup = BeautifulSoup(response.text, "html.parser")
    script_tag = soup.find("script", {"type": "text/data", "id": "commercialImages"})

    if not script_tag:
        print("未找到标签")
        return []

    try:
        image_data = json.loads(script_tag.string)
        return [img["qhimg_url"] for img in image_data]
    except json.JSONDecodeError:
        print("解析JSON数据失败")
        return []


def download_images(image_urls, headers, folder="data"):
    if not os.path.exists(folder):
        os.makedirs(folder)

    for i, url in enumerate(image_urls):
        try:
            img_response = requests.get(url, headers=headers)
            if img_response.status_code == 200:
                with open(f"{folder}/image_{i}.jpg", "wb") as f:
                    f.write(img_response.content)
                print(f"下载成功: image_{i}.jpg")
            else:
                print(f"下载失败: {url}")
        except Exception as e:
            print(f"下载错误: {e}")


if __name__ == "__main__":
    url = "https://image.so.com/i?q=海洋&inact=0"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
    }
    image_urls = fetch_image_urls(url, headers)
    if image_urls:
        print("图片下载链接:")
        for url in image_urls:
            print(url)
        download_images(image_urls, headers)

相关文章:

  • linux安装Kafka以及windows安装Kafka和常见问题解决
  • Leetcode 103: 二叉树的锯齿形层序遍历
  • 算法日记33:14届蓝桥C++B冶炼金属(二分答案)
  • 10个实用IntelliJ IDEA插件
  • es 修改索引模板分词类型
  • 归并排序:分治哲学的完美演绎与时空平衡的艺术
  • 蓝桥杯算法——铠甲合体
  • FPGA有关HDMI的一些知识,程序源自bilibi正点原子
  • Spring Boot 3.0核心特性解读
  • vue 安装包时报错 Error: not found: python2
  • C++ 内存序在多线程中的使用
  • 扫雷雷雷雷雷【水文勿三】
  • 能简述一下动态 SQL 的执行原理吗
  • 信号与系统第二章学习(六)
  • 利用Python爬虫按图搜索1688商品(拍立淘)
  • 安装好pycharm后,双击pycharm,出现“无法找到入口”,怎么办?
  • 第3章:启动界面与主界面设计
  • 解锁前端表单数据的秘密旅程:从后端到用户选择!✨
  • 线程池项目优化
  • mapbox高阶,结合threejs(threebox)实现立体三维飞线图
  • 公司搭建平台/百度seo价格
  • 传销公司做网站运营/谷歌浏览器官网下载手机版
  • 石家庄有没有销售做被用的网站/简短的软文范例
  • 公司网站设计与制作/百度seo关键词优化电话
  • 怎么做卖卷网站/如何进行网站推广
  • 怎么查询网站是谁做的/短视频营销策略