>백엔드 개발 >파이썬 튜토리얼 >Python 크롤링 중 배가 고프신가요?

Python 크롤링 중 배가 고프신가요?

步履不停
步履不停원래의
2019-07-01 13:31:495270검색

Python 크롤링 중 배가 고프신가요?

데이터 시각화를 배우고 있는데 실제 운영에 필요한 데이터가 부족하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.