Dlaczego porównywać Google i Bing Scraping?
Podczas gdy Google dominuje wyszukiwania z ponad 90% udziału w rynku na całym świecie, Bing posiada znaczny udział w konkretnych rynkach: około 9% w Stanach Zjednoczonych, wyższy wśród użytkowników przedsiębiorstw, i uprawnia do wyszukiwania wyników dla DuckDuckGo, Yahoo, i Ecosia. Dla kompleksowego monitorowania SERP, śledzenie obu wyszukiwarek daje bardziej kompletny obraz swojej widoczności organicznej.
Różnice techniczne między skrobaniem Google a Bing są znaczne. Każda wyszukiwarka ma różne struktury HTML, ochrony anty-bot, ograniczenie prędkości i wymagania proxy. Ten przewodnik łamie te różnice, dzięki czemu można budować skrobaczki, które działają niezawodnie dla obu.
Dla podstawowych koncepcji SERP scrating, zacząć od naszych SERP skrobanie z przewodnikiem proxy.
Porównanie ochrony anty- bot
Największą różnicą między Google a Bing jest to, jak agresywnie każda wyszukiwarka wykrywa i blokuje automatyczne żądania.
| Metoda wykrywania | Bing | |
|---|---|---|
| Ograniczenie stawki IP | Bardzo agresywne - bloki po ~ 10- 20 zapytaniach / godzinach na IP | Średnia - toleruje ~ 30- 50 zapytań / godzin na IP |
| Wyzwania związane z CAPTCHA | Częste reCAPTCHA na podejrzanych IP | Mniej częste, wykorzystuje prostsze wyzwania |
| Detekcja IP Datacenter | Aktywne bloki znanych zakresów danych | Mniej rygorystyczne - proxy datacenter często działają |
| Pobieranie odcisków palców przez przeglądarkę | Zaawansowane pobieranie odcisków palców TLS / JS | Podstawowe kontrole nagłówka i agenta User- |
| Analiza behawioralna | Wyrafinowane wykrywanie wzorców | Mniej wyrafinowane |
| Egzekwowanie plików cookie | Ślady i walidaty plików cookie | Mniej zależne od zachowania ciasteczek |
Klucz na wynos: Bing jest znacznie łatwiejszy do skrobania niż Google. Można często używać proxy datacenter dla Bing w umiarkowanych tomach, podczas gdy Google prawie zawsze wymaga proxy mieszkaniowe dla wiarygodnych wyników.
Różnice struktury HTML
Google i Bing używają zupełnie różnych struktur HTML dla swoich wyników wyszukiwania, wymagających oddzielnej logiki parsowania.
Struktura Google SERP
# Google organic result selectors
# Container: div#search .g
# Title: h3
# URL: a[href]
# Snippet: .VwiC3b or div[data-snf]
from bs4 import BeautifulSoup
def parse_google(html):
soup = BeautifulSoup(html, "html.parser")
results = []
for g in soup.select("div#search .g"):
title = g.select_one("h3")
link = g.select_one("a")
snippet = g.select_one(".VwiC3b")
if title and link:
results.append({
"title": title.get_text(),
"url": link["href"],
"snippet": snippet.get_text() if snippet else "",
})
return resultsStruktura Bing SERP
# Bing organic result selectors
# Container: li.b_algo
# Title: h2 a
# URL: cite
# Snippet: p.b_lineclamp2 or div.b_caption p
def parse_bing(html):
soup = BeautifulSoup(html, "html.parser")
results = []
for item in soup.select("li.b_algo"):
title_el = item.select_one("h2 a")
snippet_el = item.select_one("p.b_lineclamp2") or item.select_one("div.b_caption p")
cite_el = item.select_one("cite")
if title_el:
results.append({
"title": title_el.get_text(),
"url": title_el["href"],
"snippet": snippet_el.get_text() if snippet_el else "",
"display_url": cite_el.get_text() if cite_el else "",
})
return resultsPorównanie wyników SERP
Oba wyszukiwarki wyświetlają bogate funkcje SERP poza standardowymi, niebieskimi linkami, ale różnią się w formacie i częstotliwości:
| Cecha | Bing | |
|---|---|---|
| Promowane skrawki | Często div.xpdopen | Mniej powszechne - div.b_ans |
| Ludzie też pytają | Bardzo często - div.related-question-pair | Obecny jako "Ludzie również zapytać" - div.b_rs |
| Opakowanie lokalne | Mapa z 3 wynikami - div.VkpGBb | Mapa z listami - div.b_localA |
| Panel wiedzy | Prawy pasek boczny - div.kp-wholepage | Prawy pasek boczny - div.b_entityTP |
| Karuzela obrazkowa | Górna lub wewnętrzna - div.ULSxyf | Top - div.imgpt |
| Wyniki wideo | Format karuzeli | Format siatki - div.b_vidAns |
| Powiązane wyszukiwanie | Na dole... div.s75CSd | Dół i bok - div.b_rs |
Kompletny rozdrabniacz silnika dual- Engine
Oto ujednolicony procesor Pythona, który obsługuje zarówno Google jak i Bing:
import requests
from bs4 import BeautifulSoup
import time
import random
import json
PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
]
def scrape_serp(keyword, engine="google", country="us"):
"""Scrape SERP from Google or Bing."""
proxies = {"http": PROXY_URL, "https": PROXY_URL}
headers = {
"User-Agent": random.choice(USER_AGENTS),
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml",
}
if engine == "google":
url = "https://www.google.com/search"
params = {"q": keyword, "num": 10, "hl": "en", "gl": country}
else:
url = "https://www.bing.com/search"
params = {"q": keyword, "count": 10, "cc": country}
response = requests.get(
url,
params=params,
headers=headers,
proxies=proxies,
timeout=15,
)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
if engine == "google":
return parse_google_results(soup)
else:
return parse_bing_results(soup)
def parse_google_results(soup):
results = []
for i, g in enumerate(soup.select("div#search .g"), 1):
title = g.select_one("h3")
link = g.select_one("a")
snippet = g.select_one(".VwiC3b")
if title and link:
results.append({
"position": i,
"title": title.get_text(),
"url": link["href"],
"snippet": snippet.get_text() if snippet else "",
})
return results
def parse_bing_results(soup):
results = []
for i, item in enumerate(soup.select("li.b_algo"), 1):
title_el = item.select_one("h2 a")
snippet_el = item.select_one("p.b_lineclamp2") or item.select_one("div.b_caption p")
if title_el:
results.append({
"position": i,
"title": title_el.get_text(),
"url": title_el["href"],
"snippet": snippet_el.get_text() if snippet_el else "",
})
return results
# Compare rankings across both engines
keyword = "best web scraping proxies"
google_results = scrape_serp(keyword, "google")
time.sleep(random.uniform(3, 6))
bing_results = scrape_serp(keyword, "bing")
print(f"\n=== Google Results for '{keyword}' ===")
for r in google_results[:5]:
print(f" #{r['position']}: {r['title']}")
print(f"\n=== Bing Results for '{keyword}' ===")
for r in bing_results[:5]:
print(f" #{r['position']}: {r['title']}")Node.js Dual- Scraper silnika
const axios = require('axios');
const cheerio = require('cheerio');
const { HttpsProxyAgent } = require('https-proxy-agent');
const agent = new HttpsProxyAgent('http://USERNAME:PASSWORD@gate.proxyhat.com:8080');
async function scrapeSERP(keyword, engine = 'google') {
const config = engine === 'google'
? { url: 'https://www.google.com/search', params: { q: keyword, num: 10, hl: 'en', gl: 'us' } }
: { url: 'https://www.bing.com/search', params: { q: keyword, count: 10 } };
const { data } = await axios.get(config.url, {
params: config.params,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept-Language': 'en-US,en;q=0.9',
},
httpsAgent: agent,
timeout: 15000,
});
const $ = cheerio.load(data);
if (engine === 'google') {
return parseGoogle($);
}
return parseBing($);
}
function parseGoogle($) {
const results = [];
$('div#search .g').each((i, el) => {
const title = $(el).find('h3').text();
const url = $(el).find('a').attr('href');
const snippet = $(el).find('.VwiC3b').text();
if (title && url) results.push({ position: i + 1, title, url, snippet });
});
return results;
}
function parseBing($) {
const results = [];
$('li.b_algo').each((i, el) => {
const titleEl = $(el).find('h2 a');
const title = titleEl.text();
const url = titleEl.attr('href');
const snippet = $(el).find('p.b_lineclamp2').text() || $(el).find('div.b_caption p').text();
if (title && url) results.push({ position: i + 1, title, url, snippet });
});
return results;
}
async function compareEngines(keyword) {
const [google, bing] = await Promise.all([
scrapeSERP(keyword, 'google'),
scrapeSERP(keyword, 'bing'),
]);
console.log(`\nGoogle (${google.length} results):`);
google.slice(0, 5).forEach(r => console.log(` #${r.position}: ${r.title}`));
console.log(`\nBing (${bing.length} results):`);
bing.slice(0, 5).forEach(r => console.log(` #${r.position}: ${r.title}`));
}
compareEngines('residential proxy service');Porównanie wymogów proxy
Strategia proxy dla każdego silnika powinna się różnić w zależności od poziomu ich wykrywania:
Dla Google
- Typ proxy: Proxy mieszkaniowe wymagane do uzyskania wiarygodnych wyników
- Obrót: Obróć IP na każde żądanie
- Stawka: 1-2 wniosków na minutę na IP
- Nagłówki: Pełny zestaw nagłówków typu browser- z nagłówkami Sec- Ch- Ua, Sec- Fetch
- Cel geograficzny: Dopasowanie lokalizacji proxy z parametrami gl / hl
Dla Bing
- Typ proxy: Proxy Datacenter często wystarczające; mieszkalne dla skali
- Obrót: Czy można ponownie wykorzystać IP dla 3- 5 wniosków przed obrotem
- Stawka: 3-5 wniosków na minutę na IP
- Nagłówki: Standardowe nagłówki User- Agent i Akceptuj zazwyczaj wystarczające
- Cel geograficzny: Użyj parametru cc; geodopasowanie IP mniej krytyczne
ProxyHat proxy mieszkalne pracować optymalnie dla obu silników. Dla Bing- tylko skrobanie przy umiarkowanej objętości, proxy datacenter może wystarczyć, ale proxy mieszkaniowe z ProxyHat zapewniają spójne wyniki w obu silnikach bez konieczności oddzielnej infrastruktury. Patrz dokumentacja dla szczegółów konfiguracji.
Porównanie parametrów URL
| Cel | Parametr Google | Parametr Bing |
|---|---|---|
| Wyszukaj zapytanie | q | q |
| Wyniki na stronę | num (10- 100) | count (1-50) |
| Odroczenie wyniku | start | first |
| Kraj | gl | cc |
| Język | hl | setlang |
| Bezpieczne wyszukiwanie | safe | safeSearch |
| Wyłącz personalizację | pws=0 | N / A (mniej spersonalizowane domyślnie) |
| Weryfikacja lokalizacji | uule | location |
Kiedy śledzić oba silniki
Śledzenie zarówno Google jak i Bing jest szczególnie cenne w tych scenariuszach:
- Rynki przedsiębiorstw: Bing ma większy udział w rynku wśród użytkowników korporacyjnych dzięki integracji Microsoft Edge i Windows
- Koncentracja rynku amerykańskiego: Bing posiada około 9% amerykańskiego ruchu poszukiwawczego, reprezentującego miliony potencjalnych odwiedzających
- Poszukiwanie głosu: Moc Bing Cortana i niektóre wyniki asystenta głosu
- Różnorodność algorytmów: Ranking dobrze na Bing często wymaga różnych strategii optymalizacji niż Google
- DuckDuckGo i Yahoo ruchu: Oba używają indeksu Bing, więc rankingi Bing wpływają również na te platformy
Postępowanie z przypadkami krawędzi
Rynek Bing - specyficzne domeny
W przeciwieństwie do Google, który wykorzystuje google.com z gl parametr dla wszystkich krajów, Bing ma domeny specyficzne dla kraju:
# Bing country-specific URLs
BING_DOMAINS = {
"us": "https://www.bing.com/search",
"uk": "https://www.bing.co.uk/search",
"de": "https://www.bing.de/search",
"fr": "https://www.bing.fr/search",
"jp": "https://www.bing.co.jp/search",
}Różne paginacje
# Google pagination: start parameter (0, 10, 20, ...)
google_page_2 = {"q": "query", "start": 10, "num": 10}
# Bing pagination: first parameter (1, 11, 21, ...)
bing_page_2 = {"q": "query", "first": 11, "count": 10}Najskuteczniejszym podejściem jest budowa wielosilnikowego nadajnika SERP z jednolitą infrastrukturą proxy. ProxyHat residential proxy obsługują zarówno Google jak i Bing z tym samym połączeniem, upraszczając swoją architekturę przy jednoczesnym zapewnieniu niezawodnych wyników z obu silników.
Więcej na temat budowy solidnej infrastruktury skrawania, zobacz nasze przewodniki na przy użyciu proxy w Python, przy użyciu proxy w Node.js, i nasze najlepsze proxy do skrobania stron internetowych Przegląd. Sprawdź ProxyHat SERP rozwiązań śledzenia dla konfiguracji dopasowanych.





