Crawling PAGODA data from Myanmar Wikipedia
class .mw-parser-output မှာ Chlidren တွေရှိတယ်။
လိုတာက h2, p, div.reflist
title => h1#firstHeading
Page တစ်ခုလုံးကနေ သေချာ Parse လုပ်နိုင်ဖို့ လိုမယ်။
input => Wiki Page output => Json Object
{
"id" : 0,
"title" : "Page Title",
"content" : [
{
"title" : "Sub Title 1",
"content" : "this is sub title content",
"facts" : [] // for list items
},
{
"title" : "Sub Title 1",
"content" : "this is sub title content",
"facts" : []
}
],
"images" : [
"images urls ",
"images urls ",
"images urls ",
],
"url" : "original url"
}
title ကတော့ အိုကေတယ်။
// https://my.wikipedia.org/wiki/ဥပ္ပါတသန္တိ_စေတီတော်
var main_content = {
id : 0,
title : "",
content_list : [],
image_list : []
};
let title = $("#firstHeading").text();
main_content.title = title;
console.log("title is " + title);
let block = {
title : "",
content : "",
facts : []
};
var $parentDiv = $('#mw-content-text > div.mw-parser-output');
// Find all img elements within the parent div
var $imgElements = $parentDiv.find('img');
// Iterate through each img element and extract the src attribute
var images = [];
$imgElements.each(function() {
var src = $(this).attr('src');
// console.log("https:"+src);
let image_url = "https:"+src;
images.push(image_url);
});
main_content.image_list = images;
$parentDiv.children().each(function() {
// Perform operations on each child element
let childElement = $(this);
let htmlTag = childElement.prop('nodeName');
let text = childElement.text();
console.log(childElement.prop('nodeName') + " , " + childElement.text());
text = text.replace(/\[[^\]]+\]/g, '');
text = text.replace(/\[|\]/g, '');
text = text.replace(/\n/g, '');
text = text.replace("ဓာတ်ပုံများ", "");
if(htmlTag == 'H2' && text.length > 0){
block.title = text;
}
if(htmlTag == 'P' && text.length > 0){
block.content = text;
main_content.content_list.push(JSON.parse(JSON.stringify(block))); // = title;
block = {
title : "",
content : "",
facts : []
};
}
if(htmlTag == 'UL'){
// loop through ul to get li , facts
childElement.children().each(function() {
block.facts.push($(this).text());
});
main_content.content_list.push(JSON.parse(JSON.stringify(block))); // = title;
block = {
title : "",
content : "",
facts : []
};
}
// stop point
if(text.indexOf('ကိုးကား') !== -1){
// stop loop
return false;
}
// $(this).prop('nodeName');
// console.log(childElement.prop('nodeName') + " , " + childElement.text());
// ...do something with childElement
});
console.log("main content");
console.log(main_content);
Final Output
{
"id": 0,
"title": "ဥပ္ပါတသန္တိ စေတီတော်",
"content_list": [
{
"title": "",
"content": "ဥပ္ပါတသန္တိ စေတီတော် (အင်္ဂလိပ်: Uppatasanti Pagoda, pronounced )သည် နေပြည်တော်တွင် တည်ရှိသော ထင်ရှားသည့်တန်ခိုးကြီး စေတီတစ်ဆူဖြစ်သည်။ တရုတ်ပြည်မှ ဗုဒ္ဂစွယ်တော်ရုပ်ပွားတော်ကို ဌာပနာထားရှိသည်။ ရန်ကုန်မြို့ရှိ ရွှေတိဂုံစေတီတော်၏ ပုံစံကို နမူနာယူကာ တည်ဆောက်ထားခြင်းဖြစ်သည်။ ဉာဏ်တော်အမြင့်မှာ ၉၉ မီတာ (၃၂၅ ပေ) ရှိသည်။",
"facts": []
},
{
"title": "",
"content": "ထီးတော်တင်လှူပူဇော်ပွဲကို ၂၀၀၉ ခုနှစ် မတ်လ ၁၀ ရက်နေ့တွင် ကျင်းပခဲ့သည်။",
"facts": []
},
{
"title": "သမိုင်းကြောင်း",
"content": "စေတီတော်တည်ဆောက်ရေးလုပ်ငန်းများနိုင်ငံတော်အေးချမ်းသာယာရေးနှင့်ဖွံ့ဖြိုးရေးကောင်စီ ဥက္ကဋ္ဌ ဗိုလ်ချုပ်မှူးကြီးသန်းရွှေ၏ လမ်းညွှန်မှုဖြင့် ၂၀၀၆ခုနှစ် နိုဝင်ဘာလ ၁၂ ရက်နေ့တွင်စတင်ခဲ့ပြီး ၂၀၀၉ခုနှစ် မတ်လတွင် ပြီးစီးခဲ့သည်။ စေတီတော်၏ ပန္နက်တင် မင်္ဂလာအခမ်းအနားကို ၂၀၀၆ ခုနှစ် နိုဝင်ဘာလ ၁၂ ရက်နေ့တွင် ကျင်းပခဲ့သည်။ အခမ်းအနားအတွက် ဖိတ်စာတွင် 'ရာဇဌာနီ နေပြည်တော် (ဘုရင်နန်းစံသည့် မင်းနေပြည်)' စာပိုဒ်ဖြင့် ဖွင့်ထားသည်။ စေတီ၏ဉာဏ်တော်သည် ရွှေတိဂုံဘုရားအောက် ၃၀ စင်တီမီတာနိမ့်သည်။ဥပ္ပါတသန္တိကို အကြမ်းဖျင်းဘာသာပြန်ဆိုရလျှင် 'ဘေးဒုက္ခ ကပ်ဆိုးကြီးမှ အကာအကွယ်ပေးခြင်း' ဖြစ်သည်။ ဤအမည်သည် ၁၆ ရာစုအစောပိုင်းလောက်တွင် ဘုန်းတော်ကြီးတစ်ပါးမှ ရေးသားရွတ်ဆိုခဲ့သည့် ပရိတ်ဂါထာ ဖြစ်သည်။ ဤ ပရိတ်ဂါထာကို ဘေးဒုက္ခ များကြုံသည့်အချိန်၊ အထူးသဖြင့် တိုင်းတစ်ပါးမှ ဝင်ရောက်တိုက်ခိုက်လာသည့်အခါ တွင် ရွတ်ဆိုကြသည်။",
"facts": []
},
{
"title": "တည်ဆောက်ပုံ",
"content": "စေတီတော်ကို လူလုပ်ကုန်းမြင့်ပေါ်တွင် တည်ဆောက်ထားခြင်းဖြစ်သည်။ ",
"facts": []
},
{
"title": "",
"content": "စေတီတော်တွင် ",
"facts": []
},
{
"title": "",
"content": "",
"facts": [
"မဟာဆုတောင်းပြည့်ဘုရား",
"ကျောက်စိမ်းဘုရား ၃ ဆူ",
"၁၀၈ပေ မြင့်သော တံခွန်တိုင်",
"မဟာဗောဓိညောင်ပင်နှင့် ဘုရား ၂၈ ဆူ",
"ညောင်ပင် ၁၀၈ ပင် နှင့် ဥယျာဉ်တော်",
" ရှင်ဥပဂုတ္တ နှင့် ရေကန်တော်",
"သိမ်ကျောင်းဆောင် အစရှိသည်တို့ ထည့်သွင်းတည်ဆောက်ထားသည်။"
]
},
{
"title": "",
"content": "၂၀၀၉ခုနှစ် မတ်လတွင် ဘုရားပွဲကျင်းပစဉ်အတွင်း ရဟတ်မတော်တဆဖြစ်ပွားမှုကြောင့် လူ (၂၀) ဦးသေဆုံးခဲ့သည်။ ",
"facts": []
}
],
"image_list": [
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Uppatasanti_Pagoda-02.jpg/220px-Uppatasanti_Pagoda-02.jpg",
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Uppatasanti_Pagoda_hti_closeup.jpg/120px-Uppatasanti_Pagoda_hti_closeup.jpg",
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Uppatasanti_Pagoda-02.jpg/120px-Uppatasanti_Pagoda-02.jpg",
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Uppatasanti_Pagoda%2C_Naypyidaw.jpg/120px-Uppatasanti_Pagoda%2C_Naypyidaw.jpg",
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Uppatasanti_Pagoda-01.jpg/120px-Uppatasanti_Pagoda-01.jpg",
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Naypyidaw_--_Uppatasanti_Pagoda_interior.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_interior.JPG",
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Naypyidaw_--_Uppatasanti_Pagoda_--_corner_view.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_--_corner_view.JPG",
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Naypyidaw_--_Uppatasanti_Pagoda_Plaza_at_sunset.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_Plaza_at_sunset.JPG",
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Naypyidaw_--_Uppatasanti_Pagoda_plaza_shrine.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_plaza_shrine.JPG",
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Naypyidaw_--_Uppatasanti_Pagoda_plaza.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_plaza.JPG",
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Buddha_image_at_UPTTT.jpg/120px-Buddha_image_at_UPTTT.jpg"
]
}
လိုချင်တဲ့ input နဲ့ output ကို သေချာရေးထားရမယ်။ ပြီးရင် Processing လုပ်မယ့် ပုံစံ။
// #mw-content-text ရဲ့ first child
// $("#myIDorWhatever").first();
$first_child = $("#mw-content-text :first-child").children().each(function () {
console.log(this); // "this" is the current element in the loop
});
$('#parentElement').children().each(function() {
// Perform operations on each child element
var childElement = $(this);
// ...do something with childElement
});
// #mw-content-text > div.mw-parser-output
// #mw-content-text > div.mw-parser-output > p:nth-child(3)
// #mw-content-text > div.mw-parser-output > h2:nth-child(5)
var imgElements = parentDiv.getElementsByTagName('img');
// Iterate through each img element and extract the src attribute
for (var i = 0; i < imgElements.length; i++) {
var src = imgElements[i].getAttribute('src');
console.log(src);
}
// Select the specific div containing the img elements
var $parentDiv = $('#mw-content-text > div.mw-parser-output');
// Find all img elements within the parent div
var $imgElements = $parentDiv.find('img');
// Iterate through each img element and extract the src attribute
var images = [];
$imgElements.each(function() {
var src = $(this).attr('src');
// console.log("https:"+src);
let image_url = "https:"+src;
images.push(image_url);
});
console.log(images);
https://my.wikipedia.org/wiki/%E1%80%96%E1%80%AD%E1%80%AF%E1%80%84%E1%80%BA:Uppatasanti_Pagoda_hti_closeup.jpg
//upload.wikimedia.org/wikipedia/commons/thumb/8/81/Uppatasanti_Pagoda-02.jpg/220px-Uppatasanti_Pagoda-02.jpg
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Uppatasanti_Pagoda_hti_closeup.jpg/120px-Uppatasanti_Pagoda_hti_closeup.jpg
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/8/81/Uppatasanti_Pagoda-02.jpg/120px-Uppatasanti_Pagoda-02.jpg
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/2/23/Uppatasanti_Pagoda%2C_Naypyidaw.jpg/120px-Uppatasanti_Pagoda%2C_Naypyidaw.jpg
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Uppatasanti_Pagoda-01.jpg/120px-Uppatasanti_Pagoda-01.jpg
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Naypyidaw_--_Uppatasanti_Pagoda_interior.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_interior.JPG
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Naypyidaw_--_Uppatasanti_Pagoda_--_corner_view.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_--_corner_view.JPG
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/8/89/Naypyidaw_--_Uppatasanti_Pagoda_Plaza_at_sunset.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_Plaza_at_sunset.JPG
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/3/36/Naypyidaw_--_Uppatasanti_Pagoda_plaza_shrine.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_plaza_shrine.JPG
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Naypyidaw_--_Uppatasanti_Pagoda_plaza.JPG/120px-Naypyidaw_--_Uppatasanti_Pagoda_plaza.JPG
VM1873:9 //upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Buddha_image_at_UPTTT.jpg/120px-Buddha_image_at_UPTTT.jpg
Written on May 16, 2023