use*_*503 6 html python beautifulsoup scrapy web-scraping
我正在尝试使用 python 从谷歌地图中抓取某个地方的评论数量。例如,Pike's Landing 餐厅(见下面的谷歌地图 URL)有 162 条评论。我想在 python 中提取这个数字。
网址:https : //www.google.com/maps?cid=15423079754231040967
我不太精通HTML,但是从互联网上的一些基本示例中,我编写了以下代码,但是在运行此代码后,我得到的是一个黑色变量。如果你能让我知道我在这方面做错了什么,我将不胜感激。
from urllib.request import urlopen
from bs4 import BeautifulSoup
quote_page ='https://www.google.com/maps?cid=15423079754231040967'
page = urlopen(quote_page)
soup = BeautifulSoup(page, 'html.parser')
price_box = soup.find_all('button',attrs={'class':'widget-pane-link'})
print(price_box.text)
Run Code Online (Sandbox Code Playgroud)
在没有 API 的情况下,很难在纯 Python 中做到这一点,这就是我的结尾(请注意,我&hl=en在 url 的末尾添加了内容,以获得英文结果而不是我的语言):
import re
import requests
from ast import literal_eval
urls = [
'https://www.google.com/maps?cid=15423079754231040967&hl=en',
'https://www.google.com/maps?cid=16168151796978303235&hl=en']
for url in urls:
for g in re.findall(r'\[\\"http.*?\d+ reviews?.*?]', requests.get(url).text):
data = literal_eval(g.replace('null', 'None').replace('\\"', '"'))
print(bytes(data[0], 'utf-8').decode('unicode_escape'))
print(data[1])
Run Code Online (Sandbox Code Playgroud)
印刷:
http://www.google.com/search?q=Pike's+Landing,+4438+Airport+Way,+Fairbanks,+AK+99709,+USA&ludocid=15423079754231040967#lrd=0x51325b1733fa71bf:0xd609c9524d75cbc7,1
469 reviews
http://www.google.com/search?q=Sequoia+TreeScape,+Newmarket,+ON+L3Y+8R5,+Canada&ludocid=16168151796978303235#lrd=0x882ad2157062b6c3:0xe060d065957c4103,1
42 reviews
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12694 次 |
| 最近记录: |