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🔥2113



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: |

Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. How to build a private or public channel on Telegram? In handing down the sentence yesterday, deputy judge Peter Hui Shiu-keung of the district court said that even if Ng did not post the messages, he cannot shirk responsibility as the owner and administrator of such a big group for allowing these messages that incite illegal behaviors to exist.
from us


Telegram [PYTHON:TODAY]
FROM American