Treoir maidir le Sonraí Google Maps a scríobadh le Python

Tuairimí: 0

Ceadaíonn scríobadh sonraí ó Google Maps ag baint úsáide as Python faisnéis luachmhar a bhailiú faoi shuíomhanna, gnólachtaí, agus seirbhísí, atá tairbheach d'anailís ar an margadh, ag aithint na láithreacha nua is fearr, ag cothabháil eolairí reatha, anailís iomaitheora, agus an tóir a bhí ar áiteanna a thomhas. Soláthraíonn an treoir seo siúlóid chuimsitheach ar conas faisnéis a bhaint as Google Maps ag baint úsáide as iarratais ar Leabharlanna Python agus LXML. Cuimsíonn sé treoracha mionsonraithe maidir le hiarratais a dhéanamh, freagraí a láimhseáil, sonraí struchtúrtha a pharsáil, agus é a onnmhairiú chuig comhad CSV.

Do thimpeallacht a chur ar bun

Cinntigh go bhfuil na leabharlanna Python seo a leanas suiteáilte agat:

  • requests;
  • lxml;
  • csv (leabharlann chaighdeánach).

Suiteáil na leabharlanna seo ag úsáid PIP más gá:


pip install requests
pip install lxml

Anseo thíos, cuirfimid próiseas scríobtha céim ar chéim i láthair, le samplaí.

Treoir céim ar chéim chun sonraí a scríobadh ó Google Maps

Sna rannáin seo a leanas, siúilfimid trí phróiseas mionsonraithe céim ar chéim chun sonraí a scríobadh ó Google Maps, le samplaí amhairc chun tú a threorú trí gach céim.

Céim 1. Sainmhínigh an sprioc URL

Sonraigh an URL as ar mhaith leat sonraí a scríobadh.


url = "https link"

Céim 2. Sainmhínigh Ceanntásca agus Proxies

Tá sé ríthábhachtach ceanntásca cuí a chur ar bun chun gníomhaíochtaí fíor -úsáideora a athmhúnlú, rud a laghdaíonn go mór an seans go ndéanfaí an scraper a bhratach mar bot. Ina theannta sin, cuidíonn comhtháthú seachfhreastalaithe le gníomhaíochtaí scríobtha leanúnacha a chothabháil trí timpeall ar aon bhloic a d'fhéadfadh teacht chun cinn ó shárú na dteorainneacha iarratais a bhaineann le seoladh IP amháin.


headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}

proxies = {
    "http": "http://username:password@your_proxy_ip:port",
    "https": "https://username:password@your_proxy_ip:port",
}

Céim 3. Faigh ábhar an leathanaigh

Seol iarratas chuig URL Google Maps agus faigh ábhar an leathanaigh:


import requests

response = requests.get(url, headers=headers, proxies=proxies)
if response.status_code == 200:
    page_content = response.content
else:
    print(f"Failed to retrieve the page. Status code: {response.status_code}")

Céim 4. An Ábhar HTML a pharsáil

Úsáid LXML chun an t -ábhar HTML a pharsáil:


from lxml import html

parser = html.fromstring(page_content)

Na sonraí sonraí a aithint

Tá tuiscint ar struchtúr an doiciméid HTML ríthábhachtach chun sonraí a bhaint i gceart. Ní mór duit na habairtí XPath a aithint do na pointí sonraí is mian leat a scrape. Seo mar is féidir leat é a dhéanamh:

  1. Iniúchadh a dhéanamh ar an leathanach gréasáin: Oscail an leathanach Google Maps i mbrabhsálaí gréasáin agus bain úsáid as uirlisí forbróra an bhrabhsálaí (cliceáil ar dheis > Iniúchadh) chun an struchtúr HTML a scrúdú.
  2. Faigh na heilimintí ábhartha: Féach ar na heilimintí HTML ina bhfuil na sonraí is mian leat a scrape (m.sh., ainmneacha bialainne, seoltaí).
  3. Scríobh XPaths: Bunaithe ar an struchtúr HTML, scríobh na habairtí XPath chun na sonraí a bhaint. Don threoir seo, is iad na XPaths:

Ainm na bialainne:


//div[@jscontroller="AtSb"]/div/div/div/a/div/div/div/span[@class="OSrXXb"]/text()

Tabhair faoi:


 //div[@jscontroller="AtSb"]/div/div/div/a/div/div/div[2]/text()

Roghanna:


 = ', '.join(result.xpath('.//div[@jscontroller="AtSb"]/div/div/div/a/div/div/div[4]/div/span/span[1]//text()'))

Domhanleithead geo:


//div[@jscontroller="AtSb"]/div/@data-lat

Domhanfhad Geo:


 //div[@jscontroller="AtSb"]/div/@data-lng

Céim 5. Sonraí a Bhaint Amach

Sliocht na sonraí ag baint úsáide as na XPaths aitheanta:


results = parser.xpath('//div[@jscontroller="AtSb"]')
data = []

for result in results:
    restaurant_name = result.xpath('.//div/div/div/a/div/div/div/span[@class="OSrXXb"]/text()')[0]
    address = result.xpath('.//div/div/div/a/div/div/div[2]/text()')[0]
    options = ', '.join(result.xpath('.//div/div/div/a/div/div/div[4]/div/span/span[1]//text()'))
    geo_latitude = result.xpath('.//div/@data-lat')[0]
    geo_longitude = result.xpath('.//div/@data-lng')[0]

    # Ag cur isteach ar an liosta sonraí
    data.append({
        "restaurant_name": restaurant_name,
        "address": address,
        "options": options,
        "geo_latitude": geo_latitude,
        "geo_longitude": geo_longitude
    })

Céim 6. Sábháil sonraí chuig CSV

Sábháil na sonraí eastósctha le comhad CSV:


import csv

with open("google_maps_data.csv", "w", newline='', encoding='utf-8') as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=["restaurant_name", "address", "options", "geo_latitude", "geo_longitude"])
    writer.writeheader()
    for entry in data:
        writer.writerow(entry)

Cód Comhlánaithe

Seo an cód iomlán chun sonraí Google Maps a scríobadh:


import requests
from lxml import html
import csv

# Sainmhínigh an sprioc URL agus na ceanntásca
url = "https://www.google.com/search?sca_esv=04f11db33f1535fb&sca_upv=1&tbs=lf:1,lf_ui:4&tbm=lcl&sxsrf=ADLYWIIFVlh6WQCV6I2gi1yj8ZyvZgLiRA:1722843868819&q=google+map+restaurants+near+me&rflfq=1&num=10&sa=X&ved=2ahUKEwjSs7fGrd2HAxWh1DgGHbLODasQjGp6BAgsEAE&biw=1920&bih=919&dpr=1"
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
proxies = {
    "http": "http://username:password@your_proxy_ip:port",
    "https": "https://username:password@your_proxy_ip:port",
}

# Faigh ábhar an leathanaigh
response = requests.get(url, headers=headers, proxies=proxies)
if response.status_code == 200:
    page_content = response.content
else:
    print(f"Failed to retrieve the page. Status code: {response.status_code}")
    exit()

# Parse an t -ábhar HTML
parser = html.fromstring(page_content)

# Sonraí a bhaint as XPath ag baint úsáide as XPath
results = parser.xpath('//div[@jscontroller="AtSb"]')
data = []

for result in results:
    restaurant_name = result.xpath('.//div/div/div/a/div/div/div/span[@class="OSrXXb"]/text()')[0]
    address = result.xpath('.//div/div/div/a/div/div/div[2]/text()')[0]
    options = ', '.join(result.xpath('.//div/div/div/a/div/div/div[4]/div/span/span[1]//text()'))
    geo_latitude = result.xpath('.//div/@data-lat')[0]
    geo_longitude = result.xpath('.//div/@data-lng')[0]

    # Ag cur isteach ar an liosta sonraí
    data.append({
        "restaurant_name": restaurant_name,
        "address": address,
        "options": options,
        "geo_latitude": geo_latitude,
        "geo_longitude": geo_longitude
    })

# Sábháil sonraí chuig CSV
with open("google_maps_data.csv", "w", newline='', encoding='utf-8') as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=["restaurant_name", "address", "options", "geo_latitude", "geo_longitude"])
    writer.writeheader()
    for entry in data:
        writer.writerow(entry)

print("Data has been successfully scraped and saved to google_maps_data.csv.")

Le haghaidh scríobadh éifeachtach gréasáin, tá sé ríthábhachtach na ceanntásca agus na seachvótálaithe a úsáid. Is iad na roghanna seachfhreastalaí is fearr ná seachfhreastalaithe ionad sonraí nó ISP, a thairgeann luasanna arda agus latency íseal. Mar sin féin, ós rud é gur seachvótálaithe statacha iad seo, tá gá le huainíocht IP a chur i bhfeidhm chun cosc ​​a chur ar bhlocáil go héifeachtach. Rogha eile agus níos éasca le húsáid ná seachfhreastalaithe cónaithe a úsáid. Déanann na seachvótálaithe dinimiciúla seo an próiseas uainíochta a shimpliú agus tá fachtóir iontaobhais níos airde acu, rud a fhágann go bhfuil siad níos éifeachtaí ag bloic timpeall.

Tuairimí:

0 tuairimí