Skip to content

Instantly share code, notes, and snippets.

@vivekthedev
Last active February 22, 2025 11:27
Show Gist options
  • Select an option

  • Save vivekthedev/271e34e440fb4abe0847915d78331d93 to your computer and use it in GitHub Desktop.

Select an option

Save vivekthedev/271e34e440fb4abe0847915d78331d93 to your computer and use it in GitHub Desktop.
Scraping tutorial Article for BrightData
# requirements.txt
# selenium==4.28.1
# schedule==1.2.2
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
import csv
import schedule
def scrape_maps():
driver = webdriver.Chrome()
query = "restaurants in Paris"
url = "https://www.google.com/maps/search/" + query.replace(" ", "+")
driver.get(url)
sleep(10)
results = []
elements = driver.find_elements(By.CLASS_NAME, "bfdHYd")
prevCount = 0
while len(elements) != prevCount:
prevCount = len(elements)
feed_element = driver.find_element(By.CSS_SELECTOR, '[role=feed]')
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight;", feed_element)
sleep(10)
elements = driver.find_elements(By.CLASS_NAME, "bfdHYd")
for element in elements:
data = dict()
data["Name"] = element.find_element(By.CLASS_NAME, "qBF1Pd").text
try:
data["Rating"] = element.find_element(By.CLASS_NAME, "MW4etd").text
except :
data["Rating"] = "-"
try:
num = element.find_element(By.CLASS_NAME, "UY7F9").text
data["Reviews"] = num[1:-1]
except:
data["Reviews"] = "-"
child = element.find_elements(By.CLASS_NAME, "W4Efsd")[2]
data["Type"] = child.find_elements(By.TAG_NAME, "span")[0].text
data["Address"] = child.find_elements(By.TAG_NAME, "span")[-1].text
results.append(data)
with open('businesses.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=["Name", "Rating", "Reviews", "Type", "Address"])
writer.writeheader()
for result in results:
writer.writerow(result)
driver.close()
scrape_maps()
schedule.every(7).days.do(scrape_maps)
while True:
schedule.run_pending()
sleep(60)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment