【发布时间】:2021-08-07 07:57:36
【问题描述】:
我正在尝试使用 python 和 BeautifulSoup 从谷歌地图获取数据。例如城市的药店。我将获得位置数据(经纬度)、药房名称(即 MDC 药房)、药房分数(3.2)、rewiews 数(10)、带邮政编码的地址和药房电话号码。 我已经尝试过 python 和 BeautifulSoup 但我被卡住了,因为我不知道如何提取数据。类方法不起作用。当我对结果进行美化和打印时,我已经看到了所有数据。那么如何为熊猫数据框清理它们呢?我需要更多代码来获取干净的数据并将它们添加到列表或 df 中。也是classobject变成noobject类型。这是我的代码:
import requests
from bs4 import BeautifulSoup
r=requests.get("https://www.google.com.tr/maps/search/eczane/@37.4809437,36.7749346,57378m/data=!3m1!1e3")
soup= BeautifulSoup(r.content,"lxml")
a=soup.prettify()
l=soup.find("div",{"class":"mapsConsumerUiSubviewSectionGm2Placeresultcontainer__result-container mapsConsumerUiSubviewSectionGm2Placeresultcontainer__one-action mapsConsumerUiSubviewSectionGm2Placeresultcontainer__wide-margin"})
print(a)
我有这个结果,我需要从这里(上图)提取数据。
我想要这样的结果(如下)。谢谢...
【问题讨论】:
-
如果您可以在 BS4 结果中看到它,那么显然您可以从字符串中提取它。那么你的问题是什么?
-
顺便说一句,这些数据都在 Javascript 块中。您将能够提取单个 HTML 标记。
-
嗨,蒂姆,感谢您的关注。我知道我可以提取它们。但我找不到办法把它们提取出来或把它们变成一张桌子。我找不到标签。我看不到页面的经纬度类源(在我的网址中)。你能做一个样品吗?在 Google 地图中搜索药店。并提取结果信息?再次感谢您的关注。
-
这是您可以观察到的。您想要的数据是大型 JSON 结构的一部分,称为
APP_INITIALIZATION_STATE。您可以使用简单的string.find操作获取该 JSON 代码,然后您可以使用json.loads将其转换为 Python 字典。之后,它只是在这些列表中找到正确的元素。 -
谢谢。我试过了。但不能(JSONDecodeError:期望值)。我需要解决方案的示例代码。
标签: python beautifulsoup screen-scraping