Yelp抓取,Python难以获得旅馆的信息

问题描述 投票:2回答:1

我正在寻找使用刮板为镇上的汽车旅馆返回Yelp评论的方法。我需要做的就是在评论中搜索关键字,例如“霉菌”,并提供给汽车旅馆,以及评论本身。我有一些代码(我正在使用Jupyterhub),但似乎只给了我汽车旅馆名称。

import json
from bs4 import BeautifulSoup

api_key = '#insert key here'
headers = {'Authorization': 'Bearer %s' % api_key}
url = 'https://api.yelp.com/v3/businesses/search'
params = {'term':'motel','location':'Williamsburg, VA'}
req = requests.get(url, params=params, headers=headers)
parsed = json.loads(req.text)
businesses = parsed["businesses"]
business_url_list = [business["url"] for business in businesses]

print(businesses)

biznames=[]
for val in businesses:
    biznames.append(val['name'])

print(biznames)

review_list_master = []
for i in business_url_list:
    continue_search = True
    reviews_list = []
    while continue_search == True:
        html_doc = requests.get(i).content
        parsed_html = BeautifulSoup(html_doc, 'lxml')
        target_rows_url = parsed_html.findAll('div',attrs={'class','review-content'})
        for x in target_rows_url:
            new_text = x.text.strip().replace('\n','')
            date_break_point = new_text.find('    ')
            reviews_list.append(new_text[date_break_point+4:len(new_text)])
        try:
            target_rows_new = parsed_html.find('a',attrs={'class','u-decoration-none next pagination-links_anchor'})
            new_url = target_rows_new.get('href')
            i = new_url
        except:
            continue_search = False
    review_list_master.append(reviews_list)

print(target_rows_url)
print(parsed_html)

for i in range(len(review_list_master)):
    print(biznames[i])
    #print(len(review_list_master[i]))
    for x in review_list_master[i]:
        print(x)
        print()
    print("------")

任何建议将不胜感激。我是编码方面的新手,并且尝试使用了很多刮板,似乎无法工作。

python api web-scraping yelp
1个回答
1
投票

您似乎使用了错误的端点。如果要分析评论,则需要使用https://www.yelp.com/developers/documentation/v3/business_reviews。当前使用的'https://api.yelp.com/v3/businesses/search'只是让您搜索商家,而评论内容不是您可以搜索的字段之一(尽管这是您想要的)。

遗憾的是,解决此问题并非易事,因为这意味着您需要进行大量的API调用(每个业务一个)来获得评论,然后将其存储在自己的存储中。将它们存储在本地/内存/任何位置后,您可以使用自己的关键字在它们中进行搜索,

而且,不幸的是,business_reviews端点似乎每个企业最多只能提供三个评论。我不确定为什么要设置该限制(或者如果您为API付费则可以取消该限制)。

© www.soinside.com 2019 - 2024. All rights reserved.