天天看點

初學爬蟲:利用Python爬取資料

  • 新手初學,話不多說,直接放代碼,需要的自取。
  • 沒有加每日自動運作的東西,回頭研究一下。預設儲存在代碼目錄的water_level.csv檔案裡,隻保留了幾個有用的資訊。
  • 回頭研究一下http://www.cjh.com.cn/sqindex.html)資料,。看了一下網頁,資料是存在js裡的,還沒有研究爬js的資料。
# -*- encoding: utf-8 -*-
'''
@File    :   cq_water_level.py
@Time    :   2022/12/03 10:31:18
@Author  :   erqie
@Version :   1.0
@Contact :   [email protected]
@Function:   爬取每日資料
'''
__author__ = 'erqie'


import requests
import json

url = 'http://cqsw.slj.cq.gov.cn/hydrologyapi/stRiverR/dayWaterNotice'
# 根據自己的浏覽器自己修改,防止無法通路的情況。沒有測試不加header會不會拒絕通路。
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.139 Safari/537.36'
}
resp = requests.post(url, headers=headers)
# print(resp.text)
data_list = json.loads(resp.text)["data"]
# print(data_list)
with open('water_level.csv', 'a', encoding='utf-8') as f:
    for s in data_list:
        # print(f'{s.get("stcd")}----------{s.get("stnm")}--------{s.get("tm")}--------{s.get("z")}')
        f.write(
            f'{"".join(s.get("stcd").split())},{"".join(s.get("addvnm").split())},{"".join(s.get("stnm").split())},{"".join(s.get("tm").split())},{s.get("z")}\n'
        )