PYTHON2DAY Telegram 7086
🔥 Полезные скрипты Python

Парсер Google изображений — работает аккуратно: кастомный User-Agent, задержки, сохранение расширения по Content-Type.

Несколько строк кода — и у тебя уже папка с десятками картинок по любому запросу: котики, машины, мемы или даже датасет для нейросети.

👨‍💻 Подготовка и запуск:
pip install requests beautifulsoup4
python google_images_mini.py


Код:

import os, re, time, pathlib, requests
from bs4 import BeautifulSoup
from typing import List

UA = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/124.0 Safari/537.36")

def slug(s: str) -> str:
return re.sub(r"[^a-zA-Z0-9а-яА-Я_]+", "_", s).strip("_")[:50] or "item"

def google_image_urls(query: str, limit: int = 10) -> List[str]:
url = "https://www.google.com/search"
params = {"q": query, "tbm": "isch", "hl": "ru"}
r = requests.get(url, params=params, headers={"User-Agent": UA}, timeout=15)
r.raise_for_status()
soup = BeautifulSoup(r.text, "html.parser")
out: List[str] = []
for img in soup.select("img"):
if len(out) >= limit: break
src = img.get("data-iurl") or img.get("data-src") or img.get("src")
if not src or src.startswith("data:"): continue
if "gstatic.com" in src and "encrypted" in src: continue # миниатюры
if src.startswith("http"): out.append(src)
return out

def download(urls: List[str], folder: str, name: str) -> None:
pathlib.Path(folder).mkdir(parents=True, exist_ok=True)
for i, u in enumerate(urls, 1):
try:
r = requests.get(u, headers={"User-Agent": UA}, timeout=20)
if r.status_code != 200: raise RuntimeError(f"HTTP {r.status_code}")
ext = (r.headers.get("Content-Type","").split(";")[0].split("/")[-1] or "jpg")
ext = ("jpg" if ext == "jpeg" else ext)
path = os.path.join(folder, f"{name}_{i:02d}.{ext}")
with open(path, "wb") as f: f.write(r.content)
print(f" {path}")
time.sleep(0.3) # чуть-чуть вежливости
except Exception as e:
print(f"⚠️ пропуск: {u} — {e}")

def download_google_images(query: str, limit: int = 10, folder: str = "images") -> None:
name = slug(query)
urls = google_image_urls(query, limit)
if not urls:
print("Ничего не нашёл. Попробуй другой запрос.")
return
download(urls, os.path.join(folder, name), name)

if __name__ == "__main__":
# пример: меняй запрос и лимит по вкусу
download_google_images("cats 4k", limit=5)


Скрипт:
💬 делает запрос к Google Images;
💬 парсит ссылки на изображения;
💬 скачивает всё в удобную папку;
💬 никаких ручных сохранений — всё автоматом.

💻 Для учебных целей и аккуратного use-case: малые выборки, разумные паузы.

Отличный лайфхак, если нужно быстро собрать датасет или загрузить тонны изображений без ручного копипаста.

Сохраняй, пригодится! 👍

#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2112



tgoop.com/python2day/7086
Create:
Last Update:

🔥 Полезные скрипты Python

Парсер Google изображений — работает аккуратно: кастомный User-Agent, задержки, сохранение расширения по Content-Type.

Несколько строк кода — и у тебя уже папка с десятками картинок по любому запросу: котики, машины, мемы или даже датасет для нейросети.

👨‍💻 Подготовка и запуск:

pip install requests beautifulsoup4
python google_images_mini.py


Код:

import os, re, time, pathlib, requests
from bs4 import BeautifulSoup
from typing import List

UA = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/124.0 Safari/537.36")

def slug(s: str) -> str:
return re.sub(r"[^a-zA-Z0-9а-яА-Я_]+", "_", s).strip("_")[:50] or "item"

def google_image_urls(query: str, limit: int = 10) -> List[str]:
url = "https://www.google.com/search"
params = {"q": query, "tbm": "isch", "hl": "ru"}
r = requests.get(url, params=params, headers={"User-Agent": UA}, timeout=15)
r.raise_for_status()
soup = BeautifulSoup(r.text, "html.parser")
out: List[str] = []
for img in soup.select("img"):
if len(out) >= limit: break
src = img.get("data-iurl") or img.get("data-src") or img.get("src")
if not src or src.startswith("data:"): continue
if "gstatic.com" in src and "encrypted" in src: continue # миниатюры
if src.startswith("http"): out.append(src)
return out

def download(urls: List[str], folder: str, name: str) -> None:
pathlib.Path(folder).mkdir(parents=True, exist_ok=True)
for i, u in enumerate(urls, 1):
try:
r = requests.get(u, headers={"User-Agent": UA}, timeout=20)
if r.status_code != 200: raise RuntimeError(f"HTTP {r.status_code}")
ext = (r.headers.get("Content-Type","").split(";")[0].split("/")[-1] or "jpg")
ext = ("jpg" if ext == "jpeg" else ext)
path = os.path.join(folder, f"{name}_{i:02d}.{ext}")
with open(path, "wb") as f: f.write(r.content)
print(f" {path}")
time.sleep(0.3) # чуть-чуть вежливости
except Exception as e:
print(f"⚠️ пропуск: {u} — {e}")

def download_google_images(query: str, limit: int = 10, folder: str = "images") -> None:
name = slug(query)
urls = google_image_urls(query, limit)
if not urls:
print("Ничего не нашёл. Попробуй другой запрос.")
return
download(urls, os.path.join(folder, name), name)

if __name__ == "__main__":
# пример: меняй запрос и лимит по вкусу
download_google_images("cats 4k", limit=5)


Скрипт:
💬 делает запрос к Google Images;
💬 парсит ссылки на изображения;
💬 скачивает всё в удобную папку;
💬 никаких ручных сохранений — всё автоматом.

💻 Для учебных целей и аккуратного use-case: малые выборки, разумные паузы.

Отличный лайфхак, если нужно быстро собрать датасет или загрузить тонны изображений без ручного копипаста.

Сохраняй, пригодится! 👍

#python #soft #code

BY [PYTHON:TODAY]




Share with your friend now:
tgoop.com/python2day/7086

View MORE
Open in Telegram


Telegram News

Date: |

Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! Telegram iOS app: In the “Chats” tab, click the new message icon in the right upper corner. Select “New Channel.” Concise Hui said the messages, which included urging the disruption of airport operations, were attempts to incite followers to make use of poisonous, corrosive or flammable substances to vandalize police vehicles, and also called on others to make weapons to harm police. Read now
from us


Telegram [PYTHON:TODAY]
FROM American