Посібник із Python для вебскрапінгу результатів пошуку Google
Google, домінантна пошукова система, є справжньою скарбницею цінних даних. Водночас автоматичне та масштабне отримання результатів пошуку Google може бути складним. У цьому посібнику розглядаються ці виклики, способи їх подолання та техніки ефективного вебскрапінгу результатів пошуку Google.
Розуміння SERP Google
Термін «SERP» (Search Engine Results Page) часто трапляється в обговореннях вебскрапінгу Google. Він означає сторінку, що відображається після введення пошукового запиту. На відміну від простих списків посилань у минулому, сучасні SERP багаті на різні елементи для покращення користувацького досвіду. До ключових елементів належать featured snippets, платні оголошення, відеокаруселі, розділи «People also ask», local packs і пов’язані пошуки.
Правові аспекти вебскрапінгу результатів Google
Правомірність вилучення даних із SERP Google є гарячою темою. Загалом вебскрапінг загальнодоступних інтернет-даних, зокрема інформації з SERP Google, є законним. Водночас правові вимоги можуть відрізнятися, тож варто звернутися по конкретну юридичну консультацію.
Виклики під час вебскрапінгу результатів пошуку Google
Google використовує кілька методів для запобігання несанкціонованому збору даних, через що важко відрізнити шкідливих ботів від безпечних скраперів. Серед поширених перешкод:
- CAPTCHA: Google використовує CAPTCHA, щоб відрізняти ботів від людей, і у разі невдалої спроби це може призвести до блокування IP-адреси.
- Блокування IP: Дії з вебскрапінгу можуть призвести до бану IP-адреси, якщо сайт розпізнає їх як підозрілі.
- Неструктуровані дані: для ефективного аналізу зібрані дані мають бути добре впорядковані.
Oxylabs’ Google Search API призначений для подолання цих викликів і надає структуровані дані пошуку Google без клопоту з підтримкою вебскрапера.
- Основні Python-бібліотеки для вебскрапінгу результатів пошуку Google
Щоб розпочати цей посібник із отримання даних із пошуку Google за допомогою Python, переконайтеся, що у вас є такі передумови:
- Облікові дані доступу до SERP API від Oxylabs
- Python installation
- Бібліотека Requests
Спочатку зареєструйтеся в Oxylabs’ Google Search Results API, щоб отримати ім’я користувача та пароль, які знадобляться протягом усього цього посібника. Далі встановіть Python (версії 3.8 або новішої) з офіційного сайту Python. Нарешті, вам знадобиться бібліотека Requests, відома своєю здатністю легко обробляти HTTP-запити. Встановіть її за допомогою такої команди:
Для macOS/Linux:
$python3 -m pip install requests
For Windows:
d:amazon>python -m pip install requests
2. Формування payload і виконання POST-запиту
Створіть новий Python-скрипт і введіть такий код:
import requests
from pprint import pprint
payload = { 'source': 'google', 'url': 'https://www.google.com/search?hl=en&q=newton' # Example search for 'newton' }response = requests.request( 'POST', 'https://realtime.oxylabs.io/v1/queries', auth=('USERNAME', 'PASSWORD'), json=payload, )pprint(response.json())
Цей скрипт поверне відповідь, подібну до такої:
{
"results": [
{
"content": "<!doctype html>...",
"created_at": "YYYY-DD-MM HH:MM:SS",
"updated_at": "YYYY-DD-MM HH:MM:SS",
"page": 1,
"url": "https://www.google.com/search?hl=en&q=newton",
"job_id": "1234567890123456789",
"status_code": 200
}
]
}
Зверніть увагу, як URL у payload представляє сторінку результатів пошуку Google для «newton».
3. Customizing Query Parameters
Словник payload можна налаштувати відповідно до ваших потреб у вебскрапінгу. Наприклад:
payload = {
'source': 'google',
'url': 'https://www.google.com/search?hl=en&q=newton'
}
Here, ‘source’ is a key parameter, defaulting to Google, and the URL specifies the Google search page. There are various other parameters available, such as ‘google_ads’, ‘google_hotels’, and more, detailed in the Oxylabs documentation.
When configuring the payload, remember that using ‘google_search’ as the source disallows the use of the URL parameter. However, you can utilize multiple parameters for different data types without needing multiple URLs.
To refine your results further, you can add parameters like ‘domain’, ‘geo_location’, and ‘locale’ to your payload. For example:
payload = {
'source': 'google_search',
'query': 'newton',
'domain': 'de',
'geo_location': 'Germany',
'locale': 'en-us'
}
This configuration fetches American English results from google.de, as seen in Germany. You can also control the volume of results using ‘start_page’, ‘pages’, and ‘limit’ parameters. For instance, to fetch results from pages 11 and 12, with 20 results per page:
payload = {
'start_page': 11,
'pages': 2,
'limit': 20,
... # Additional parameters
}
4. Фінальний Python-скрипт для вебскрапінгу даних пошуку Google
Поєднавши всі елементи, ось повний приклад скрипта:
import requests
from pprint import pprint
payload = { 'source': 'google_search', 'query': 'shoes', 'domain': 'de', 'geo_location': 'Germany', 'locale': 'en-us', 'parse': True, 'start_page': 1, 'pages': 5, 'limit': 10, }response = requests.request( 'POST', 'https://realtime.oxylabs.io/v1/queries', auth=('USERNAME', 'PASSWORD'), json=payload, )if response.status_code != 200: print("Error - ", response.json()) exit(-1)pprint(response.json())
5. Експорт даних у CSV
Google від Oxylabs Scraper API може перетворювати HTML-сторінки на JSON, усуваючи потребу в BeautifulSoup або подібних бібліотеках. Наприклад:
payload = {
'source': 'google_search',
'query': 'adidas',
'parse': True,
}
Результати повертаються у форматі JSON, який можна ефективно нормалізувати за допомогою бібліотеки Pandas:
import pandas as pd
data = response.json()
df = pd.json_normalize(data['results'])
df.to_csv('export.csv', index=False)
6. Обробка помилок і винятків
Під час виникнення проблем, як-от неполадки з мережею або недійсні параметри, використовуйте блоки try-except:
try:
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('USERNAME', 'PASSWORD'),
json=payload,
)
except requests.exceptions.RequestException as e:
print("Помилка:", e)
if response.status_code != 200:
print("Error - ", response.json())
Conclusion
Цей посібник має на меті надати вам знання, щоб скрапити Google ефективно працювати з результатами пошуку за допомогою Python. Якщо потрібна додаткова допомога або є запитання, команда підтримки Oxylabs доступна електронною поштою або в live chat.

