【问题标题】:How to Scrape Google Map? [closed]如何抓取谷歌地图? [关闭]
【发布时间】:2016-08-01 01:39:22
【问题描述】:

抱歉这个问题,我是新手。

我有一个项目,我需要抓取谷歌地图以查找某个地区的所有公司,我刚刚在我们决定该项目时听说过这个术语,我做了一些研究,发现大多数抓取服务需要某个公司领域开始搜索,但我需要该领域的所有公司,有人可以解释我应该如何开始吗?

我在这个帖子中看到了:Is it ok to scrape data from Google results?

他们谈论 IP 我知道 ISP 将公共 IP 地址分配给某些区域,但我该如何使用它来抓取?

我还看到一篇文章说我必须使用 Google API 但在他们的网站上: https://developers.google.com/maps/web-services/ 我应该使用哪个 API?

我使用的是 Ubuntu 系统,如果我需要安装任何东西,我应该使用 windows 操作系统吗?

感谢和亲切的问候

更新:

我从http://py-googlemaps.sourceforge.net/ 发现我可以使用这个 python 代码:

local = gmaps.local_search('附近的咖啡馆' + 目的地) 打印本地['responseData']['results'][0]['titleNoFormatting'] Vie De France 面包店和咖啡馆

如果我将 Cafe 替换为“公司”或任何我相信我会得到我正在寻找的信息的名称,对吗?另外我想知道是否有人可以告诉我如何进入配置界面?

【问题讨论】:

  • 阅读google text search,它可能会帮助您解决问题。如果您所有的公司都有一些共同的特定词,您可以对常用词进行文本搜索以获取这些位置。如果你已经了解 JS,用 Javascript 实现会更容易。
  • bash 有用吗?还是蟒蛇?
  • 其实他们的条款是禁止爬取的,而且他们大概有保护机制,但最终无法阻止爬取。

标签: google-maps google-maps-api-3 web-scraping


【解决方案1】:

你可以使用google-search-results包来抓取谷歌地图。

Full example at Repl.it.

import os
from serpapi import GoogleSearch

params = {
    "engine": "google_maps",
    "q": "coffee",
    "type": "search",
    "ll": "@40.7455096,-74.0083012,14z",
    "api_key": os.getenv("API_KEY")
}

client = GoogleSearch(params)
data = client.get_dict()

print("Local results")

for result in data['local_results']:
    print(f"""
Title: {result['title']}
Address: {result['address']}
Rating: {result['rating']}
Reviews: {result['reviews']}""")

if 'ads_results' in data:
    print("Ads")

    for result in data['ads_results']:
        print(f"""
Title: {result['title']}
Address: {result['address']}""")

JSON 响应

{
  "local_results": [
    {
      "position": 1,
      "title": "Birch Coffee",
      "data_id": "0x89c258ef40975c2b:0x4fa24ff965c3f3e",
      "gps_coordinates": {
        "latitude": 40.7638094,
        "longitude": -73.9666075
      },
      "rating": 4.5,
      "reviews": 477,
      "price": "$$",
      "type": "Coffee shop",
      "address": "134 1/2 E 62nd St, New York, NY 10065",
      "hours": "Open until 7:00 PM",
      "phone": "(212) 686-1444",
      "website": "http://www.birchcoffee.com/",
      "description": "Hip spot offering house-roasted brews. Local coffeehouse chain serving thoughtfully-sourced, house-roasted brews in a hip, bustling space.",
      "thumbnail": "https://lh5.googleusercontent.com/p/AF1QipPy035-T0IVHuC3CffD8UEf0n70HkkZXvkb7gSJ=w122-h92-k-no"
    },
    {
      "position": 2,
      "title": "Think Coffee",
      "data_id": "0x89c259ca0a28731f:0xd3d13e0daf7fae6c",
      "gps_coordinates": {
        "latitude": 40.7522222,
        "longitude": -74.0016667
      },
      "rating": 3.9,
      "reviews": 467,
      "price": "$$",
      "type": "Coffee shop",
      "address": "500 W 30th St, New York, NY 10001",
      "website": "http://www.thinkcoffee.com/",
      "thumbnail": "https://lh5.googleusercontent.com/p/AF1QipMIVRZJMr-bnGKw28VTrctmhVYQOnIKBRj0NmnN=w122-h92-k-no"
    }
    
    // Stripped...
  ]
}

输出

Local results
Title: Think Coffee
Address: 73 8th Ave, New York, NY 10014
Rating: 4.2
Reviews: 741

Title: Birch Coffee @Flatiron
Address: 21 E 27th St, New York, NY 10016
Rating: 4.4
Reviews: 940

Title: Irving Farm New York
Address: 135 E 50th St, New York, NY 10022
Rating: 4.3
Reviews: 248

// Stripped...

Ads
Title: Gotham Coffee Roasters
Address: 23 W 19th St, New York, NY 10011

披露:我在 SerpApi 工作。

【讨论】:

    【解决方案2】:

    法律不允许从 Google Maps API 抓取数据。更好的做法是存储任何地方的place_id 并检索它以供以后使用。

    看到这个Google Maps terms of use

    10.1.3 对数据导出或复制的限制。

    (a) 禁止未经授权复制、修改、创建衍生产品 作品,或内容的展示。您不得复制、翻译、 修改或创建衍生作品(包括创建或 贡献到数据库),或公开展示任何内容或任何 其中的一部分,除非这些条款明确允许。为了 例如,禁止以下行为:(i) 创建服务器端 修改地图图块; (ii) 拼接多个静态地图图像 一起显示大于地图允许的地图 API 文档; (iii) 创建邮寄名单或电话营销 基于内容的列表; (iv) 导出、写入或保存 第三方基于位置的平台或服务的内容。

    (b) 不预取、缓存或存储内容。你不能 预取、缓存或存储任何内容,但您可以存储:(i) 有限数量的内容,以改进 如果您暂时这样做,您的 Maps API 实施的性能, 安全地,并且以不允许使用内容的方式 服务之外; (ii) 任何内容标识符或密钥 Maps APIs 文档特别允许您存储。为了 例如,您不得使用内容创建独立的 “地点”或其他本地列表信息的数据库。

    (c) 禁止大量下载或批量提供内容。您不得使用 以使您或任何其他人访问大众的方式提供服务 任何内容的下载或批量提要,包括但不限于 数字纬度或经度坐标、图像、可见地图 数据或地点数据(包括商家信息)。例如,你 不允许提供使用内容的批量地理编码服务 包含在 Maps API 中。

    【讨论】:

    • 多么糟糕的答案 - 这不是讨论 ToS 的论坛。抓取公共数据是合法的,讨论它不会违反任何 stackexchange 规则。 OP 询问如何做到这一点,而不是它是否违反了谷歌的服务条款。
    • 我不会提供不合法的建议,但欢迎您自担风险!
    • “你不应该从 Google Maps API 抓取数据”这听起来像是一个挑战。
    • 我认为指出这些事情很重要。您显然想在遵守法律限制的情况下做事。如果任何公司为其产品制定了使用条款,则应予以尊重。
    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 2018-06-09
    • 2015-03-27
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多