Рубрики
Без рубрики

Скраппировать встроенные изображения Google с помощью Python

Содержание: вступление, импорт, то, что будет скранировано, процесс, код, ссылки, outro. Вступление в это … Tagged с помощью Python, учебного пособия, скрещивания в Интернете, науки о данных.

Содержание: вступление, импорт, то, что будет скранировано, процесс, код, ссылки, outro.

вступление

Этот пост в блоге является продолжением серии Web Scraping Google. Здесь вы увидите, как соскрести встроенные изображения, используя Python с BeautifulSoup , Запросы , LXML , Re , База64 , Байтозио , Pil библиотеки. Альтернативное решение API будет показано.

ПРИМЕЧАНИЕ: этот пост в блоге предполагает, что вы знакомы Beautifulsoup , Запросы Библиотеки и базовое понимание регулярных выражений.

Импорт

import requests, lxml, re, base64
from bs4 import BeautifulSoup 
from io import BytesIO # for decoding base64 image
from PIL import Image # for saving decoded image
from serpapi import GoogleSearch # alternative API solution

Что будет соскреблено

Процесс

Выбор контейнера, ссылки и где используется фотография.

Извлечение миниатюры Чтобы извлечь миниатюру, нам нужно посмотреть на тег с id dimg_xx ( xx – некоторое число ).

Если вы открываете исходный код (Ctrl + U) и попробуйте найти dimg_36 ( или другие цифры в зависимости от кода HTML ) Вы увидите, что есть 2 происшествия, которые будут найдены, и один из них будет где -то в <Скрипт> Теги, это то, что нам нужно.

Чтобы извлечь миниатюры, нам нужно использовать regex Чтобы получить их из <Скрипт> Теги, потому что если бы вы разбирали данные из SRC Атрибут, вывод, который вы получите, будет таким: Данные: Image/GIF; BASE64, R0LGODLHAQABAAAAP/////////YH5BAEKAAEALAAAAAABAAAAAAICTAEAOW == который BASE64 кодированная картина.

Подробнее об этой теме можно найти на Разработчик Мозилла

Регулярное выражение чрезвычайно просто:

s='data:image/jpeg;base64,(.*?)';

Пояснение регулярного выражения:

  1. ищу S = 'Data: Image/JPEG; BASE64,
  2. Создание группы захвата (. *?) который захватит все и заканчивается '; символы.
  3. только Группа захвата будет извлечен без других частей.

Снимок экрана, чтобы проиллюстрировать то, что захватывается регулярным выражением, которое вы можете найти Здесь :

После этого строка декодированного Base64 можно сохранить с помощью Pil модуль. Больше можно найти на Stackoverflow Ответ Анкет

Код

import requests, lxml, re, urllib.parse, base64
from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO

headers = {
    "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"
}

params = {
    "q": "minecraft shareds photo",
    "sourceid": "chrome",
}

html = requests.get("https://www.google.com/search", params=params, headers=headers)
soup = BeautifulSoup(html.text, 'lxml')

for result in soup.select('div[jsname=dTDiAc]'):
    link = f"https://www.google.com{result.a['href']}"
    being_used_on = result['data-lpage']
    print(f'Link: {link}\nBeing used on: {being_used_on}\n')

# finding all script (

Оригинал: “https://dev.to/dimitryzub/scrape-google-inline-images-with-python-mnc”