Downloading All Images From Web Page

ဒီေန့ က်ြန္ေတာ္ webpage တစ္ခုက image ေတြ အကုန္ကုိ python သုံးျပီး ဘယ္လုိ download ဆြဲရမလဲကုိ ျပေပးမွာပါ။Web Scraping or Crawling က်ြန္ေတာ္တုိ့က website တစ္ခုက data ေတြလုိခ်င္တယ္ ဒါေပမဲ့ အဲ့website က API မခ်ေပးထားဘူး။အဲ့က်ရင္ က်ြန္ေတာ္တုိ့လုိခ်င္တဲ့ data ကုိ web crawler ေတြသုံးျပီး ရယူၾကပါတယ္။ဥပမာအားျဖင့္ Facebook ေပါ္ website link  တစ္ခု share လုိက္ၾကည့္ facebook bot ကခ်က္ခ်င္း အဲ့website ကုိသြားျပီး data collect လုပ္လာပါတယ္။Google Crawler ေတြလဲ ထုိနည္းတုိင္းပါပဲ မိတ္ေဆြက Google မွာ ရွာလုိက္တယ္ သူတုိ့ရဲ့ NLP algo ေတြနဲ့ နားလည္ေအာင္လုပ္ျပီး website ေတြက ေန crawl လုပ္ပါတယ္။ရလာတဲ့ result ကုိ မိတ္ေဆြက ျမင္ရတာပါ။ဒါေပမဲ့ Google bot ကုိလဲ ဘယ္ဟာေတြေတာ့ လာယူလုိ့ရတယ္ ဘယ္ဟာေတြကုိေတာ့ bot ကုိ access မေပးဘူးကုိ သတ္မွတ္ထားလုိ့ရပါတယ္။အဲ့ေတာ့ က်ြန္ေတ္ာတုိ့ စလုိက္ၾကရေအာင္။က်ြန္ေတာ္ဒီ tutorial မွာ Python version 3 ကုိသုံးထားတာပါ။python2 user ေတြတြက္ အလုပ္မျဖစ္ပါဘူး။က်ြန္ေတာ့္အေနနဲ့လဲ Python version 3ကုိပဲ သုံးရတာၾကုိက္လုိ့ သုံးဖုိ့အၾကံေပးခ်င္ပါတယ္။

က်ြန္ေတာ္တုိ့ ပထမဦးဆုံးလုိအပ္တာေတြ install လုပ္လုိက္ရေအာင္။

က်ြန္ေတာ္တုိ့ beautifulsoup က က်ေတာ့ website ထဲက လုိခ်င္တဲ့ tags ေတြဆြဲထုတ္ဖုိ့ပါ။Requests ကေတာ့ ထည့္ေပးလုိက္တဲ့ website link ကုိ request လုပ္ျပီး ျပန္ပုိ့လုိက္တဲ့ response ထဲကေန beautifulsoup ကုိသုံးျပီး image tagေတြဆြဲထုတ္ဖ့ုိ့ပါ။

အဲ့ေတာ့ code ကုိ တစ္ခ်က္ၾကည့္လုိက္ရေအာင္

က်ြန္ေတာ္ာတုိ့ လိုအပ္တဲ့ lib ေတြ import လုပ္လုိက္ျပီးေတာ့ command line ကေန url ကုိ ထည့္လုိ့ရေအာင္လုပ္ထားပါတယ္။က်ြန္ေတာ္ပထမတုန္းက ေျပာခဲ့သလုိပဲ က်ြန္ေတာ္တုိ့ image download လုပ္ခ်င္တဲ့ website ကုိ line 10 နဲ့ 11 မွာ request လုပ္ျပီး ရလာတဲ့ Response ကုိ BeautifulSoupဆုိတဲ့ class ထဲကုိထည့္လုိက္ျပီး object တစ္ခုေဆာက္လုိက္ပါတယ္။က်ြန္ေတာ္တုိ့ လုိခ်င္တာက image ေတြပါပဲ တျခား ဘာမွမလုိခ်င္တာမုိ့ find_all() ဆုိတဲ့ method ကုိသုံးျပီး img tags ကုိေတြကုိ ရွာလုိက္ပါတယ္။

line 14 to  16 မွာေတာ့ ရလာတဲ့ Image tags ေတြကုိ loop ပတ္လုိက္ပါတယ္။ဘာလုိ့ဆုိေတာ့ အကုန္download လုပ္မွာမုိ့လုိ့ပါ ျပီးေတာ့ urlretrieve ကုိသုံးျပီး  image ကုိ ေဒါင္းေလာ့ဆြဲလုိက္ပါတယ္။urlretrieve မွာ params နွစ္ခုပါျပီး ဒုတိယတစ္ခုက output ပါ ပထမကေတာ့ input urlပါ။

က်ြန္ေတာ္တုိ့ html မွာ <img src=”image source” alt=””/>အဲ့လုိ ပုံစံမ်ိဳးေရးတာမို့လုိ့ က်ြန္ေတာ္တုိ့ image ကုိ server ေပါ္ဘယ္ေနရာတင္ထားတာလဲကုိ src ကေန ၾကည့္လုိ့ရေအာင္ image[‘src’] ဆုိျပီး src ကုိထုတ္လုိက္ပါတယ္။ျပီးေတာ့မွ srcကုိထည့္ျပီး ေဒါင္းေလာ့ဆြဲလုိက္ပါတယ္။

ဒီေနရာမွာ error တက္နုိင္ပါတယ္။ပုံမွန္အားျဖင့္ developer ေတြက src ထဲမွာ url အျပည့္အစုံနဲ့ မေရးပါဘူး။အကယ္လုိ့ image က လက္ရွိfolder ရဲ့ အျပင္မွာရွိတယ္ဆုိေအာက္ကလုိေရးၾကပါတယ္။CMS ေတြကေတာ့ auto generate လုပ္တာမို့လုိ့ အဆင္ေျပေပမယ့္။developer ေတြကေတာ့

<img src=”../test.jpg” alt=””>

အဲ့လုိမ်ိဳးေရးၾကပါတယ္အဲ့မွာ မိတ္ေဆြတုိ့ url ကုိ concatenate လုပ္ေပးဖုိ့လုိလာပါတယ္။

အဲ့ေတာ့ က်ြန္ေတာ္တုိ့ code ေလးကုိ update လုပ္ဖုိ့လုိလာပါတယ္။

အဲတာဆုိ ေအာက္ဆုံးက urlretrieve ဆုိတဲ့ လုိင္းမွာ က်ြန္ေတာ္ urlနွစ္ခုကုိ join ထားတာေတြ့မွာပါ။အဲ့တာဆုိရင္ေတာ့ solving လုပ္ျပီးပါျပီ။အဲ့တာဆုိရင္ေတာ့ ေအာက္က command ေလးသုံးျပီး run လုိ့ရပါျပီ။

အဲ့တာဆုိရင္ေတာ့ အခုလုိ result ကုိေတြ့ရမွာပါ။

ဒီ ပုိ့စ္ကုိ ၾကုိက္မယ္လုိ့ေမွ်ာ္လင့္ပါတယ္။မိတ္ေဆြတုိ့ က်ြန္ေတာ့္ facebook page ကုိ review ေလးေတြေရးေပးမယ္ဆုိ က်ြန္ေတာ္လဲေရးရတာအားရွိတာေပါ့။see ya…

Share:

Leave a Reply