데이터 시각화를 배우고 있는데 실제 운영에 필요한 데이터가 부족하여 Ele.me에서 테이크아웃 매장 정보를 크롤링하고 싶습니다.
주요 목적은 데이터를 얻는 것이므로 코드는 비교적 간단합니다. 다음 코드로 이동하세요.
import requests import json import csv def crawler_ele(page=0): def get_page(page): url = 'https://h5.ele.me/restapi/shopping/v3/restaurants?latitude=xxxx&longitude=xxxx&offset={page}&limit=8&terminal=h5'.format(page=page*8) headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36", 'cookie': r'xxxx' } re = json.loads(requests.get(url,headers=headers).text) return re re = get_page(page) if re.get('items'): with open('data.csv','a',newline='') as f: writer = csv.DictWriter(f,fieldnames=['名称', '月销售量','配送费', '起送价', '风味','评分', '配送时长', '评分统计', '距离', '地址']) writer.writeheader() for item in re.get('items'): info = dict() restaurant = item.get('restaurant') info['地址'] = restaurant.get('address') info['配送费'] = restaurant.get('float_delivery_fee') info['名称'] = restaurant.get('name') info['配送时长'] = restaurant.get('order_lead_time') info['距离'] = restaurant.get('distance') info['起送价'] = restaurant.get('float_minimum_order_amount') info['评分'] = restaurant.get('rating') info['月销售量'] = restaurant.get('recent_order_num') info['评分统计'] = restaurant.get('rating_count') info['风味'] = restaurant.get('flavors')[0].get('name') writer.writerow(info) # print(info) if re.get('has_next') == True: crawler_page(page+1) crawler_ele(0)
여기에 몇 가지 간단한 설명이 있습니다.
URL의 경도와 위도가 제거됩니다. 직접 크롤링해야 하는 위치의 경도와 위도 또는 호출할 수 있습니다. 지도 API는 위도와 경도를 가져옵니다.
헤더에 쿠키를 추가해야 합니다. 그렇지 않으면 로그인 권한으로 인해 크롤링되는 페이지 수가 제한됩니다. 호출은 루프가 아닌 반복적이므로 결과를 저장하는 CSV 파일에 여러 개의 반복 헤더가 있으므로 Excel을 열고 중복 값을 삭제할 수 있습니다.
관련 튜토리얼 권장 사항:
Python 비디오 튜토리얼위 내용은 Python 크롤링 중 배가 고프신가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!