Update app.py
Browse files
app.py
CHANGED
@@ -5,90 +5,38 @@ import gradio as gr
|
|
5 |
|
6 |
def extract_data_from_html(file):
|
7 |
try:
|
8 |
-
# قراءة محتوى الملف
|
9 |
content = file.read().decode('utf-8')
|
10 |
except Exception as e:
|
11 |
return f"خطأ أثناء قراءة الملف: {str(e)}", None
|
12 |
|
13 |
-
# تحليل HTML باستخدام BeautifulSoup
|
14 |
soup = BeautifulSoup(content, 'html.parser')
|
15 |
|
16 |
-
# استخراج البيانات
|
17 |
data = []
|
18 |
hashtags_counter = Counter()
|
19 |
|
20 |
-
#
|
21 |
-
desc_containers = soup.find_all('div'
|
22 |
print(f"عدد الحاويات التي تم العثور عليها: {len(desc_containers)}")
|
23 |
-
|
24 |
-
for container in desc_containers:
|
25 |
-
# طباعة كل حاوية لتحليلها
|
26 |
-
print(container.prettify()) # طباعة محتوى الحاوية
|
27 |
-
|
28 |
-
# استخراج العنوان
|
29 |
-
title_tag = container.find('h1', class_="css-198cw7i-H1Container")
|
30 |
-
title = title_tag.get_text(strip=True) if title_tag else "بدون عنوان"
|
31 |
-
print(f"العنوان: {title}")
|
32 |
-
|
33 |
-
# استخراج الهاشتاغات
|
34 |
-
hashtags = [
|
35 |
-
tag.get_text(strip=True)
|
36 |
-
for tag in container.find_all('a', class_="css-sbcvet-StyledCommonLink")
|
37 |
-
if tag.get_text(strip=True).startswith('#')
|
38 |
-
]
|
39 |
-
print(f"الهاشتاغات: {hashtags}")
|
40 |
-
hashtags_counter.update(hashtags)
|
41 |
-
|
42 |
-
# إضافة البيانات إلى القائمة
|
43 |
-
data.append({"Title": title, "Hashtags": ", ".join(hashtags)})
|
44 |
-
|
45 |
-
# تحويل البيانات إلى DataFrame
|
46 |
-
df_titles = pd.DataFrame(data)
|
47 |
-
df_hashtags = pd.DataFrame(hashtags_counter.items(), columns=["Hashtag", "Count"]).sort_values(by="Count", ascending=False)
|
48 |
-
|
49 |
-
return df_titles, df_hashtags
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
def extract_data_from_html(file):
|
55 |
-
try:
|
56 |
-
# قراءة محتوى الملف المرفوع
|
57 |
-
content = file.read().decode('utf-8')
|
58 |
-
except Exception as e:
|
59 |
-
return f"خطأ أثناء قراءة الملف: {str(e)}", None
|
60 |
-
|
61 |
-
# تحليل HTML باستخدام BeautifulSoup
|
62 |
-
soup = BeautifulSoup(content, 'html.parser')
|
63 |
|
64 |
-
# استخراج البيانات
|
65 |
-
data = []
|
66 |
-
hashtags_counter = Counter()
|
67 |
-
|
68 |
-
# العثور على الحاويات التي تحتوي على البيانات
|
69 |
-
desc_containers = soup.find_all('div', class_="css-vi46v1-DivDesContainer")
|
70 |
for container in desc_containers:
|
71 |
-
|
72 |
-
title_tag = container.find('h1', class_="css-198cw7i-H1Container")
|
73 |
title = title_tag.get_text(strip=True) if title_tag else "بدون عنوان"
|
74 |
|
75 |
-
# استخراج الهاشتاغات
|
76 |
hashtags = [
|
77 |
tag.get_text(strip=True)
|
78 |
-
for tag in container.find_all('a'
|
79 |
if tag.get_text(strip=True).startswith('#')
|
80 |
]
|
81 |
hashtags_counter.update(hashtags)
|
82 |
|
83 |
-
# إضافة البيانات إلى القائمة
|
84 |
data.append({"Title": title, "Hashtags": ", ".join(hashtags)})
|
85 |
|
86 |
-
# تحويل البيانات إلى DataFrame
|
87 |
df_titles = pd.DataFrame(data)
|
88 |
df_hashtags = pd.DataFrame(hashtags_counter.items(), columns=["Hashtag", "Count"]).sort_values(by="Count", ascending=False)
|
89 |
|
90 |
return df_titles, df_hashtags
|
91 |
|
|
|
92 |
# واجهة Gradio
|
93 |
def gradio_interface(file):
|
94 |
result = extract_data_from_html(file)
|
|
|
5 |
|
6 |
def extract_data_from_html(file):
|
7 |
try:
|
|
|
8 |
content = file.read().decode('utf-8')
|
9 |
except Exception as e:
|
10 |
return f"خطأ أثناء قراءة الملف: {str(e)}", None
|
11 |
|
|
|
12 |
soup = BeautifulSoup(content, 'html.parser')
|
13 |
|
|
|
14 |
data = []
|
15 |
hashtags_counter = Counter()
|
16 |
|
17 |
+
# البحث عن جميع العناصر التي تحتوي على البيانات
|
18 |
+
desc_containers = soup.find_all('div') # البحث عن جميع الحاويات العامة
|
19 |
print(f"عدد الحاويات التي تم العثور عليها: {len(desc_containers)}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
for container in desc_containers:
|
22 |
+
title_tag = container.find('h1')
|
|
|
23 |
title = title_tag.get_text(strip=True) if title_tag else "بدون عنوان"
|
24 |
|
|
|
25 |
hashtags = [
|
26 |
tag.get_text(strip=True)
|
27 |
+
for tag in container.find_all('a')
|
28 |
if tag.get_text(strip=True).startswith('#')
|
29 |
]
|
30 |
hashtags_counter.update(hashtags)
|
31 |
|
|
|
32 |
data.append({"Title": title, "Hashtags": ", ".join(hashtags)})
|
33 |
|
|
|
34 |
df_titles = pd.DataFrame(data)
|
35 |
df_hashtags = pd.DataFrame(hashtags_counter.items(), columns=["Hashtag", "Count"]).sort_values(by="Count", ascending=False)
|
36 |
|
37 |
return df_titles, df_hashtags
|
38 |
|
39 |
+
|
40 |
# واجهة Gradio
|
41 |
def gradio_interface(file):
|
42 |
result = extract_data_from_html(file)
|