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

Scrape Google онлайн -результаты покупок с Python

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

Google Web Scraping (23 серия деталей)

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

вступление

Этот пост в блоге является продолжением серии Web Scraping Google. Здесь вы увидите примеры того, как вы можете скрепить результаты встроенных магазинов Google с помощью Python. Альтернативный раствор Serpapi будет показан.

Импорт

import requests
from bs4 import BeautifulSoup
from serpapi import GoogleSearch

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

Верхний блок

Правый блок

Процесс

Выбор контейнера

Выбор Заголовок

Выбор Цена

Выбор Источник

Тот же процесс идет для правильных результатов блока.

Код

import requests, json, lxml
from bs4 import BeautifulSoup

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": "buy coffe", # intentional grammatical error to display right side shopping results
  "hl": "en",
  "gl": "us"
}

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

# scrapes both from top and right side shopping results
for result in soup.select('.pla-hovercard-content-ellip'):
    title = result.select_one('.pymv4e').text
    link = result.select_one('.pla-hovercard-content-ellip a.tkXAec')['href']
    ad_link = f"https://www.googleadservices.com/pagead{result.select_one('.pla-hovercard-content-ellip a')['href']}"
    price = result.select_one('.qptdjc').text
    try:
      rating = result.select_one('.Fam1ne.tPhRLe')["aria-label"].replace("Rated ", "").replace(" out of ", "").replace(",", "")
    except:
      rating = None

    try:
      reviews = result.select_one('.GhQXkc').text.replace("(", "").replace(")", "")
    except:
      reviews = None

    source = result.select_one('.zPEcBd.LnPkof').text.strip()

    print(f'{title}\n{link}\n{ad_link}\n{price}\n{rating}\n{reviews}\n{source}\n')

----------
'''
MUD\WTR | Mushroom Coffee Replacement, 90 servings
90 serving :rise
https://www.googleadservices.com/pagead/aclk?sa=l&ai=DChcSEwj5p8u-2rzyAhV2yJQJHfzhBoUYABAHGgJ5bQ&sig=AOD64_3NGBzLzkTv61K7kSrD2f9AREHH_g&ctype=5&q=&ved=2ahUKEwji7MK-2rzyAhWaaM0KHcnaDDcQ9aACegQIAhBo&adurl=
$125.00
4.85
1k+
mudwtr.com
...
'''

Использование Google Inline Shopping API

Serpapi – платный API с бесплатным планом.

Основное отличие здесь заключается в том, что оно уже поддерживает различные результаты покупок в Google, которые могут отображаться в верхних/правых частях страницы ( См. Пример выходов ), помимо обхода блоков Google, если они появятся.

import json
from serpapi import GoogleSearch

params = {
  "api_key": "YOUR_API_KEY",
  "engine": "google",
  "q": "buy trampoline", # try to use different query to get right side shopping results
}

search = GoogleSearch(params)
results = search.get_dict()

for result in results['shopping_results']:
    print(json.dumps(result, indent=2, ensure_ascii=False))

--------------
'''
{
  "position": 1,
  "block_position": "top",
  "title": "Kangaroo Hoppers 15FT Round Kids Trampoline with Safety Enclosure Net, Basketball Hoop and Ladder, Outdoor Fun Summer Trampoline 15FT / APPLE GREEN",
  "price": "$544.99",
  "extracted_price": 544.99,
  "link": "https://www.google.com/aclk?sa=l&ai=DChcSEwiEt8LggcfxAhUtbG8EHX3OACYYABAEGgJqZg&ae=2&sig=AOD64_1U5ba--51CZ8yLWlN5uVw-QQo6Kw&ctype=5&q=&ved=2ahUKEwjp5bbggcfxAhVBHM0KHeV-AsYQ5bgDegQIAhA8&adurl=",
  "source": "Kangaroo Hopp...",
  "thumbnail": "https://serpapi.com/searches/60e067061988e55ccd479674/images/a89620ac0c8f92b77b5f789e340e17d9aa3a444194265aa1b91bfaaeeaf04717.png",
  "extensions": [
    "Special offer"
  ]
}

...

{
  "position": 1,
  "block_position": "right",
  "title": "Maxwell House Original Roast | 48oz",
  "price": "$10.49",
  "extracted_price": 10.49,
  "link": "https://www.google.com/aclk?sa=l&ai=DChcSEwiGn8aT2rzyAhXgyZQJHZHdBJMYABAEGgJ5bQ&ae=2&sig=AOD64_0jBjdUIMeqJvrXYxn4NGcpwCYrJQ&ctype=5&q=&ved=2ahUKEwiOxLmT2rzyAhWiFVkFHWMNAaEQ5bgDegQIAhBa&adurl=",
  "source": "Boxed",
  "rating": 4.6,
  "reviews": 2000,
  "thumbnail": "https://serpapi.com/searches/611e1b2cfdca3e6a1c9335e6/images/e4ae7f31164ec52021f1c04d8be4e4bda2138b1acd12c868052125eb86ead292.png"
}
...
{
  ...
  "shopping_results": [
    {
      "position": 1,
      "block_position": "right",
      "title": "Banana Republic Men's Slim Legacy Jean Medium Wash Size 32W 34L",
      "price": "$58.00",
      "extracted_price": 58.0,
      "link": "https://www.google.com/aclk?sa=l&ai=DChcSEwjc5-yLsP_sAhVM1sAKHdJ4AjQYABAFGgJpbQ&sig=AOD64_1DUpENWnXUhv0PigCNCOo-NQxHPA&ctype=5&q=&ved=2ahUKEwj3muaLsP_sAhWSLc0KHajQBb8Q5bgDegQIChBW&adurl=",
      "source": "Banana Republic",
      "rating": 4.7,
      "reviews": 86,
      "thumbnail": "",
      "extensions": [
        "Sale"
      ]
    }
'''

Ссылки

Код в онлайн -IDEGoogle inline Shopping API

Опередить

Если у вас есть какие -либо вопросы или что -то не работает правильно или вы хотите написать что -нибудь еще, не стесняйтесь бросить комментарий в разделе комментариев или через Twitter в @serp_api Анкет

Ваш, Dimitry и остальная часть команды Serpapi.

Google Web Scraping (23 серия деталей)

Оригинал: “https://dev.to/dimitryzub/scrape-google-inline-shopping-results-with-python-35cd”