قسمت هفتم – سناریو پنجم – خواندن تمام اطلاعات مرکز لرزه نگاری کشور و ذخیره در یک فایل اکسل

برای واکشی داده‌های زمین‌لرزه‌های اخیر از سایت مرکز لرزه‌نگاری کشوری دانشگاه تهران، می‌توانید از کتابخانه‌های requests و BeautifulSoup در پایتون استفاده کنید. این روش به شما امکان می‌دهد تا اطلاعات مربوط به زمین‌لرزه‌ها را استخراج کرده و در قالبی مناسب ذخیره کنید.

در تصویر زیر مشاهده می کنید داده ها داخل tr ها با کلاس newsheader قرار دارند .

در ادامه، نمونه کدی برای این منظور ارائه شده است:

import requests
from bs4 import BeautifulSoup
import pandas as pd

# آدرس صفحه مورد نظر
url = 'http://irsc.ut.ac.ir/largevents.php?lang=fa'


# ارسال درخواست به صفحه
response = requests.get(url)
response.encoding = 'utf-8'  # تنظیم کدگذاری برای پشتیبانی از زبان فارسی

# بررسی موفقیت‌آمیز بودن درخواست
if response.status_code == 200:
    # تجزیه محتوای HTML
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # یافتن تمام ردیف‌های tr با کلاس NewsHeader
    rows = soup.find_all('tr', {'class': 'NewsHeader'})
    
    # استخراج داده‌های هر ردیف
    data = []
    for row in rows:
        cols = [col.text.strip() for col in row.find_all('td')]
        if cols:  # اطمینان از اینکه سطر خالی نباشد
            data.append(cols)
    
    # بررسی اینکه آیا داده‌ای استخراج شده است
    if data:
        # ایجاد دیتافریم پانداس
        df = pd.DataFrame(data, columns=['تاریخ', 'زمان', 'عرض جغرافیایی', 'طول جغرافیایی', 'عمق', 'مکان'])
        
        # نمایش دیتافریم
        print(df)
        
        # ذخیره در فایل اکسل
        df.to_excel('earthquakes_data.xlsx', index=False, engine='openpyxl')
        print('داده‌ها با موفقیت در فایل earthquakes_data.xlsx ذخیره شدند.')
    else:
        print("هیچ داده‌ای در ردیف‌های NewsHeader پیدا نشد. ساختار HTML صفحه را بررسی کنید.")
else:
    print(f'خطا در واکشی داده‌ها: وضعیت {response.status_code}')

توضیحات کد:

  1. ارسال درخواست به صفحه: با استفاده از requests.get، محتوای صفحه مورد نظر واکشی می‌شود. تنظیم کدگذاری به utf-8 برای پشتیبانی از زبان فارسی ضروری است.
  2. تجزیه محتوای HTML: با استفاده از BeautifulSoup، محتوای HTML صفحه تجزیه می‌شود تا بتوان عناصر مورد نظر را استخراج کرد.
  3. یافتن جدول حاوی اطلاعات زمین‌لرزه‌ها: با استفاده از ویژگی‌های HTML، جدول مورد نظر شناسایی می‌شود.
  4. ()text.strip فضای خالی ابتدا و انتها را حذف می کند.
  5. استخراج سرفصل‌ها و داده‌ها: سرفصل‌های جدول و داده‌های هر سطر استخراج می‌شوند و در لیست‌ها ذخیره می‌گردند.
  6. ایجاد دیتافریم پانداس: با استفاده از داده‌های استخراج‌شده، یک دیتافریم پانداس ایجاد می‌شود که امکان تحلیل و ذخیره‌سازی داده‌ها را فراهم می‌کند.
  7. ذخیره در فایل اکسل: دیتافریم ایجادشده در یک فایل اکسل با نام earthquakes_data.xlsx ذخیره می‌شود.
  8. شرط response.status_code == 200 بررسی می‌کند که آیا درخواست HTTP به سرور با موفقیت انجام شده است یا خیر.در HTTP، کد وضعیت ۲۰۰ به معنای “موفقیت‌آمیز” است و نشان می‌دهد که درخواست به درستی پردازش شده و پاسخ مورد انتظار دریافت شده است. وقتی از requests.get یا هر روش دیگری در کتابخانه requests برای ارسال درخواست استفاده می‌کنیم، سرور پاسخی همراه با یک کد وضعیت بازمی‌گرداند که نشان‌دهنده نتیجه آن درخواست است.

    کدهای وضعیت مهم در HTTP:

    • ۲۰۰: موفقیت‌آمیز بودن درخواست
    • ۴۰۴: صفحه یا منبع یافت نشد
    • ۵۰۰: خطای داخلی سرور
    • ۴۰۳: دسترسی غیرمجاز یا ممنوع
    • ۳۰۱: ریدایرکت دائم به آدرس دیگر

    به این ترتیب، با استفاده از شرط response.status_code == 200 اطمینان حاصل می‌کنیم که درخواست با موفقیت انجام شده و می‌توانیم پردازش داده‌ها را ادامه دهیم.

نکات مهم:

  • نصب کتابخانه‌های مورد نیاز: قبل از اجرای کد، اطمینان حاصل کنید که کتابخانه‌های requests، BeautifulSoup و pandas نصب شده باشند. در صورت نیاز، می‌توانید با استفاده از دستور pip install آن‌ها را نصب کنید.
  • بررسی تغییرات در ساختار صفحه: در صورتی که ساختار HTML صفحه تغییر کند، ممکن است نیاز باشد کد را متناسب با تغییرات به‌روزرسانی کنید.
  • مدیریت خطاها: در کد فوق، وضعیت پاسخ سرور بررسی می‌شود. در صورت نیاز، می‌توانید مدیریت خطاهای بیشتری را اضافه کنید تا کد در مواجهه با مشکلات مختلف پایدارتر عمل کند.

با اجرای این کد، می‌توانید اطلاعات زمین‌لرزه‌های اخیر را از سایت مرکز لرزه‌نگاری کشوری واکشی کرده و در قالب یک فایل اکسل ذخیره کنید.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *