Python으로 Google 온라인 쇼핑 결과 긁기
14416 단어 datasciencewebscrapingtutorialpython
소개
이 블로그 게시물은 Google의 웹 스크래핑 시리즈의 연속입니다. 여기에서 Python을 사용하여 Google 인라인 쇼핑 결과를 스크랩하는 방법의 예를 볼 수 있습니다. 대체 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
https://mudwtr.com/collections/shop/products/90-serving-bag
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 인라인 쇼핑 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": "<URL to image>",
"extensions": [
"Sale"
]
}
'''
연결
Code in the online IDE • Google Inline Shopping API
아웃트로
질문이 있거나 제대로 작동하지 않는 것이 있거나 다른 것을 작성하고 싶은 경우 댓글 섹션이나 Twitter(으)로 자유롭게 의견을 남겨주세요.
당신 것,
Dimitry 및 나머지 SerpApi 팀.
Reference
이 문제에 관하여(Python으로 Google 온라인 쇼핑 결과 긁기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dmitryzub/scrape-google-inline-shopping-results-with-python-35cd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)