تحويل ملفات HTML إلى قاعدة بيانات SQLite بلغة Python
عند محاولتك لتشغيل السكربت باستخدام الأمر python my_script.py
، وجدت نفسك تواجه مشكلة في استخدام السكربت بسبب رسالة الخطأ التي تشير إلى عدم توفر بعض الوسائط اللازمة. يبدو أنك قمت بتعريف واستخدام واجهة سطر الأوامر (Command Line Interface) للبرنامج باستخدام argparse، ولكن هناك بعض الأمور التي يجب تصحيحها في تشغيل البرنامج.
أولاً، يبدو أنك قمت بتنسيق الكود بطريقة غير صحيحة، لذا سأقدم لك الكود بتنسيق صحيح:
-
تحليل استخدام تعبير القائمة في Python05/04/2024
-
فرز بيانات جافا سكريبت في جدول HTML15/03/2024
-
حل مشكلة طباعة الأرقام إلى ملف نصي في C02/04/2024
python#!/usr/bin/env python3
# Script to convert HTML files provided by The Online Plain Text English
# Dictionary (http://www.mso.anu.edu.au/~ralph/OPTED/) into SQLite database
import sys
import sqlite3
from argparse import ArgumentParser, FileType
from bs4 import BeautifulSoup
def parse_args():
parser = ArgumentParser("Create database from HTML dictionary pages")
parser.add_argument("files", metavar="file", nargs="+", type=FileType("rb"))
parser.add_argument("--out", "-o", required=True)
return parser.parse_args()
def create_tables(conn):
conn.execute("DROP TABLE IF EXISTS words")
conn.execute("CREATE TABLE words (id integer primary key, word text, description text)")
conn.commit()
def words(handle):
doc = BeautifulSoup(handle, "html.parser")
for p in doc.find_all("p"):
if len(p.contents) == 4:
word = p.contents[0].string.lower()
definition = p.contents[3].lstrip(") ").replace("\n", " ")
yield word, definition
def insert_words(conn, iter):
conn.executemany("INSERT INTO words VALUES (NULL, ?, ?)", iter)
def main():
args = parse_args()
db = sqlite3.connect(args.out)
create_tables(db)
for handle in args.files:
print("Processing \"{}\"".format(handle.name), file=sys.stderr)
insert_words(db, words(handle))
db.commit()
db.close()
if __name__ == "__main__":
main()
بعد تصحيح التنسيق، يمكنك تشغيل البرنامج بنجاح. يجب عليك تحديد ملفات الإدخال (file [file ...]
) والملف الناتج (--out/-o
) عند تشغيل البرنامج. على سبيل المثال:
bashpython my_script.py input_file1.html input_file2.html --out output_database.db
يرجى استبدال input_file1.html
و input_file2.html
بملفات HTML الفعلية التي تريد تحويلها إلى قاعدة بيانات SQLite، واستبدال output_database.db
بالاسم الذي تريد لملف قاعدة البيانات الناتج.
المزيد من المعلومات
بالطبع، دعنا نستكشف بعض المعلومات الإضافية حول السكربت وكيفية تشغيله.
السكربت الذي قدمته يستخدم لغة البرمجة Python لتحويل ملفات HTML من مصدر معين، وتحديدًا موقع “The Online Plain Text English Dictionary”، إلى قاعدة بيانات SQLite. يمكن أن يكون ذلك مفيدًا لتخزين الكلمات وتعاريفها بشكل هيكلي وسهل الاستعراض.
النص الموجود في السكربت يستخدم مكتبة BeautifulSoup
لتحليل وفحص ملفات HTML، وهي أداة قوية في Python للتعامل مع تحليل الصفحات HTML والبحث في هيكلها. بعد ذلك، يتم إدراج الكلمات وتعاريفها في قاعدة البيانات SQLite.
لتشغيل البرنامج بشكل صحيح، يجب عليك استخدام سطر الأوامر مع تحديد الملفات الواردة (file [file ...]
) والملف الناتج (--out/-o
). يجب أن يكون لديك Python مثبتًا على جهاز الكمبيوتر الخاص بك، ويمكنك تنفيذ الأمر من موجه الأوامر (Command Prompt) أو Terminal.
على سبيل المثال، يمكنك تنفيذ الأمر التالي:
bashpython my_script.py input_file1.html input_file2.html --out output_database.db
يتم استبدال input_file1.html
و input_file2.html
بملفات HTML الخاصة بك، و output_database.db
بالاسم الذي تريد استخدامه لملف قاعدة البيانات الناتج.