ឯកសារបង្រៀនពី Semalt៖ Web Scraping In Python

ខ្ញុំបានទៅលេង KinoPoisk (កំណែ IMDB របស់រុស្ស៊ី) ថ្មីៗនេះហើយបានរកឃើញថាប៉ុន្មានឆ្នាំមកនេះខ្ញុំបានគ្រប់គ្រងអត្រាខ្សែភាពយន្តជាង ១០០០ រឿង។ ខ្ញុំគិតថាវាគួរឱ្យចាប់អារម្មណ៍ក្នុងការស្រាវជ្រាវទិន្នន័យទាំងនេះឱ្យកាន់តែលម្អិត៖ តើខ្សែភាពយន្តរបស់ខ្ញុំមានការផ្លាស់ប្តូរដែរឬទេ? តើរដូវណាក្នុងមួយឆ្នាំដែលខ្ញុំមើលកុនកាន់តែច្រើន?

ប៉ុន្តែមុនពេលយើងវិភាគនិងបង្កើតក្រាហ្វិចស្រស់ស្អាតយើងត្រូវរកទិន្នន័យ។ ជាអកុសលសេវាកម្មជាច្រើនមិនមាន API សាធារណៈទេដូច្នេះអ្នកត្រូវពង្រីកដៃអាវរបស់អ្នកហើយញែកទំព័រ HTML ។

អត្ថបទនេះត្រូវបានបម្រុងទុកសម្រាប់អ្នកដែលតែងតែចង់រៀនពីរបៀបប្រើ Web Scrapping ប៉ុន្តែមិនបានចាប់ដៃឬមិនដឹងថាត្រូវចាប់ផ្តើមនៅទីណា។

កិច្ចការ

ភារកិច្ចរបស់យើងគឺដើម្បីស្រង់ទិន្នន័យអំពីខ្សែភាពយន្តដែលបានមើលរួចហើយ: ចំណងជើងខ្សែភាពយន្តកាលបរិច្ឆេទនិងពេលវេលាមើលចំណាត់ថ្នាក់របស់អ្នកប្រើប្រាស់។

តាមពិតការងាររបស់យើងនឹងត្រូវបានធ្វើឡើងជាពីរដំណាក់កាល៖

តំណាក់កាលទី ១ ៈទាញយកនិងរក្សាទុកទំព័រ HTML

តំណាក់កាលទី ២ ៈញែក html ក្នុងទំរង់សមស្របសំរាប់ការវិភាគបន្ថែម (csv, json, pandas dataframe ។ ល។ )

ឧបករណ៍

មានបណ្ណាល័យពស់ថ្លាន់ជាច្រើនសម្រាប់ផ្ញើសំណើតាមអ៊ីច។ ភាពល្បីល្បាញនិងងាយស្រួលបំផុតគឺសំណូមពរ។

វាក៏ចាំបាច់ផងដែរក្នុងការជ្រើសរើសបណ្ណាល័យសម្រាប់ការញែក html ។

BeatifulSoup, lxml

ទាំងនេះគឺជាបណ្ណាល័យដែលមានប្រជាប្រិយបំផុតពីរសម្រាប់ការញែក html ហើយជ្រើសរើសយកមួយក្នុងចំណោមនោះគ្រាន់តែជាចំណូលចិត្តផ្ទាល់ខ្លួនប៉ុណ្ណោះ។ លើសពីនេះទៅទៀតបណ្ណាល័យទាំងនេះត្រូវបានផ្សារភ្ជាប់គ្នាយ៉ាងជិតស្និទ្ធ។ BeautifulSoup បានចាប់ផ្តើមប្រើ lxml ជាឧបករណ៍ញែកខាងក្នុងសម្រាប់ការបង្កើនល្បឿនហើយក្នុងលីនុចម៉ូឌុលស៊ុបត្រូវបានបន្ថែម។ ដើម្បីប្រៀបធៀបវិធីសាស្រ្តខ្ញុំនឹងញែកទិន្នន័យជាមួយ BeautifulSoup និងប្រើកម្មវិធីជ្រើសរើស XPath នៅក្នុងម៉ូឌុល lxml.html ។

ទាញយកទិន្នន័យ

តោះចាប់ផ្តើមទាញយកទិន្នន័យ។ ដំបូងយើងគ្រាន់តែព្យាយាមយកទំព័រដោយ url ហើយរក្សាទុកវាទៅឯកសារមូលដ្ឋាន។

យើងបើកឯកសារលទ្ធផលហើយឃើញថាវាមិនសាមញ្ញទេ៖ គេហទំព័រចាត់ទុកយើងជាមនុស្សយន្តហើយនឹងមិនបង្ហាញទិន្នន័យទេ។

តោះស្វែងយល់ពីរបៀបដែលគេហទំព័រដំណើរការ

កម្មវិធីរុករកមិនមានបញ្ហាក្នុងការទទួលព័ត៌មានពីគេហទំព័រទេ។ ចាំមើលថាតើវាផ្ញើសំណើយ៉ាងម៉េច។ ដើម្បីធ្វើដូចនេះយើងប្រើបន្ទះ "បណ្តាញ" នៅក្នុង "ឧបករណ៍អ្នកអភិវឌ្ឍន៍" នៅក្នុងកម្មវិធីរុករក (ខ្ញុំប្រើ Firebug សម្រាប់ការនេះ) ជាធម្មតាការស្នើសុំដែលយើងត្រូវការគឺវែងបំផុត។

ដូចដែលយើងបានឃើញហើយកម្មវិធីរុករកក៏ផ្ញើទៅបឋមកថា UserAgent ខូឃីនិងចំនួនប៉ារ៉ាម៉ែត្រផ្សេងទៀត។ ដំបូងយើងគ្រាន់តែព្យាយាមបញ្ជូនអ្នកប្រើត្រឹមត្រូវទៅបឋមកថា។

ពេលនេះយើងទទួលបានជោគជ័យហើយឥឡូវនេះយើងត្រូវបានផ្តល់ទិន្នន័យចាំបាច់។ វាគួរឱ្យកត់សម្គាល់ថាពេលខ្លះគេហទំព័រក៏ត្រួតពិនិត្យសុពលភាពខូឃីផងដែរដែលក្នុងករណីវគ្គនៅក្នុងបណ្ណាល័យសំណើនឹងជួយ។

ទាញយកអត្រាទាំងអស់

ឥឡូវយើងអាចសន្សំបានមួយទំព័រជាមួយអត្រា។ ប៉ុន្តែជាធម្មតាអ្នកប្រើប្រាស់មានអត្រាការប្រាក់ច្រើនហើយវាចាំបាច់ក្នុងការធ្វើឱ្យប្រសើរឡើងតាមរយៈទំព័រទាំងអស់។ លេខទំព័រដែលចាប់អារម្មណ៍យើងងាយស្រួលផ្ទេរដោយផ្ទាល់ទៅ url ។

ការប្រមូលទិន្នន័យពី Html

ឥឡូវចូរយើងប្រមូលដោយផ្ទាល់ពីការប្រមូលទិន្នន័យពី html ។ មធ្យោបាយងាយស្រួលបំផុតដើម្បីយល់ពីរបៀបបង្កើតទំព័រអ៊ិនធឺណិតដោយប្រើមុខងារ "ត្រួតពិនិត្យធាតុ" នៅក្នុងកម្មវិធីរុករក។ ក្នុងករណីនេះអ្វីគ្រប់យ៉ាងគឺសាមញ្ញណាស់: តារាងទាំងមូលដែលមានអត្រាគឺស្ថិតនៅក្នុងស្លាក។ ជ្រើសរើសថ្នាំងនេះ៖

ពី bs4 នាំចូល BeautifulSoup

ពីលីចលីងនាំចូលអិល

# ស៊ុបស្រស់ស្អាត

ស៊ុប = BeautifulSoup (អត្ថបទ)

film_list = ស៊ុបភើហ្វិន ('ឌី', ('ថ្នាក់'៖ 'ប្រវត្តិរូបហ្វីលីខល))

# lxml

ដើមឈើ = html.fromstring (អត្ថបទ)

film_list_lxml = tree.xpath ('// div [@class =' 'profileFilmList' ']') [0]

ចូរយើងរៀនពីរបៀបទាញចំណងជើងខ្សែភាពយន្តរបស់រុស្ស៊ីនិងតំណភ្ជាប់ទៅទំព័រភាពយន្ត (ក៏របៀបដើម្បីទទួលបានអត្ថបទនិងតម្លៃនៃគុណលក្ខណៈ) ។

ប្រសិនបើអ្នកត្រូវការដកស្រង់ចំណងជើងជាភាសាអង់គ្លេសគ្រាន់តែប្តូរឈ្មោះ "រ៉េស" ទៅជា "nameEng" វិញ។

លទ្ធផល

យើងបានរៀនពីរបៀបញែកគេហទំព័រ, បានស្គាល់សំណើរបណ្ណាល័យ, BeautifulSoup, និង lxml ក៏ដូចជាទទួលបានទិន្នន័យសមស្របសម្រាប់ការវិភាគបន្ថែមទៀតនៃខ្សែភាពយន្តដែលបានមើលរួចហើយនៅលើ KinoPoisk ។