Python爬取任意城市肯德基門店信息(json數據反序列化、提取數據、寫入CSV)

本案關鍵內容點:json數據反序列化、提取數據、寫入CSV

創建csv,寫入表頭數據,腳本同目錄下會創建名稱爲book的csv文件,且第一行插入表頭內容

 

import csv

f = open('book.csv',mode='a',encoding='utf-8',newline='') #表頭 csv_writer = csv.DictWriter(f,fieldnames=['餐廳名稱','餐廳地址','詳情']) csv_writer.writeheader() #表單數據

 

 

 

 

返回結果序列化,將對象轉化爲可以傳輸、儲存的數據。下圖爲請求後返回的數據,需要反序列化後纔可以提取具體參數值

 

 

    response = requests.post(url=url, params=params, headers=headers, data=data)
    json_data = response.json() #將結果進行反序列化 將對象轉化爲可以傳輸、儲存的數據

分離、提取數據

    for i in json_data['Table1']:
        name = i['storeName']
        address = i['addressDetail']
        services = i['pro']
        print(name,address,services)

將提取的數據,逐行寫入到CSV中

 

        dict = {
            '餐廳名稱':name+'餐廳',
            '餐廳地址':address,
            '詳情':services
        }
        csv_writer.writerow(dict)

全部腳本及執行後表單內容

import requests
import csv
 
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}
 
f = open('book.csv',mode='a',encoding='utf-8',newline='')
#表頭
csv_writer = csv.DictWriter(f,fieldnames=['餐廳名稱','餐廳地址','詳情'])
csv_writer.writeheader() 
#表單數據
for i in range(1,11):
    data = {
        'cname': '',
        'pid': '',
        'keyword': '長沙',#這裏輸入城市信息
        'pageIndex': f'{i}',
        'pageSize': '10',
    }
#請求字符串
    params = {'op':'keyword'}
 
 
    response = requests.post(url=url, params=params, headers=headers, data=data)
    json_data = response.json() #將結果進行反序列化 將對象轉化爲可以傳輸、儲存的數據
 
    for i in json_data['Table1']:
        name = i['storeName']
        address = i['addressDetail']
        services = i['pro']
        print(name,address,services)
 
        dict = {
            '餐廳名稱':name+'餐廳',
            '餐廳地址':address,
            '詳情':services
        }
        csv_writer.writerow(dict)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章