yelp纽约地区数据爬取。使用feapder爬虫框架
本文使用了国内作者的一款feapder轻量级开源爬虫框架。进行yelp站点数据抓取。
第一部分为根据开放api获取店铺信息。
第二部分为根据商店id抓取评论信息。
1.抓包过程
1.抓取商店信息。
通过翻页定位到url
https://www.yelp.com/search/snippet?find_desc=&find_loc=New%20York%2C%20NY&ns=1&start=10&parent_request_id=5fd32b6ecfc91273&request_origin=user
查看参数。修改ns 翻页。在此不推荐这种方法。能找到的数据比较少。大概只有二十多页。二百多个!
推荐使用yelp开放api。网址https://www.yelp.com/developers/v3/manage_app。
2.抓取评论信息。
这一点在开放api中做的并不友好。所以我先择了通过代理ip的方式直接上网站抓。
2.调试代码
1.抓取商店信息。商店id的代码
3.基于框架编写代码
1.抓取商店信息的代码。代码基于feapder框架。
params 参数请参考yelp API文档。yelp开放API文档
feapder 框架文档https://boris-code.gitee.io/feapder/#/
https://www.yelp.com/developers/documentation/v3
self.headers[‘Authorization’] = {APIkey}
这里的latitude 和longitude 是经纬度。通过经纬度画一个四边形
def start_requests(self):
for i in range(100):
latitude = 40.641 + i / 500
for k in range(50):
longitude = -74.017 + k / 250
params = {
'radius': '2500',
'term': self.term,
'limit': '50',
'latitude': latitude,
'longitude': longitude,
}
self.headers['Authorization'] = self.getAuth()
yield feapder.Request(url=self.url, params=params, headers=self.headers)
解析函数
def parse(self, request, response):
data = response.json.get('businesses')
if data == []:
return None
for i in data:
item = SpiderDataItem()
item.table_name = 'apiapp_shop_info'
item.term = self.term
item.store_id = i.get('id')
item.alias = i.get('alias')
item.name = i.get('name')
item.image_url = i.get('image_url')
item.is_closed = i.get('is_closed')
item.url = i.get('url')
item.rating = i.get('rating')
item.coordinates = i.get('coordinates')
item.transactions = i.get('transactions')
item.location = i

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



