செமால்ட்டிலிருந்து ஒரு பயிற்சி: பைத்தானில் வலை ஸ்கிராப்பிங்

நான் சமீபத்தில் கினோபோயிஸ்கை (ஐஎம்டிபியின் ரஷ்ய பதிப்பு) பார்வையிட்டேன், பல ஆண்டுகளாக நான் 1000 திரைப்படங்களுக்கு மேல் மதிப்பிட முடிந்தது என்பதைக் கண்டறிந்தேன். இந்தத் தரவை இன்னும் விரிவாக ஆராய்வது சுவாரஸ்யமாக இருக்கும் என்று நான் நினைத்தேன்: காலப்போக்கில் எனது திரைப்பட சுவை மாறிவிட்டதா? ஆண்டின் எந்த பருவங்களில் நான் அதிக திரைப்படங்களைப் பார்க்கிறேன்?

ஆனால் அழகான கிராபிக்ஸ் பகுப்பாய்வு செய்து உருவாக்குவதற்கு முன், தரவைப் பெற வேண்டும். துரதிர்ஷ்டவசமாக, பல சேவைகளுக்கு பொது ஏபிஐ இல்லை, எனவே நீங்கள் உங்கள் சட்டைகளை உருட்ட வேண்டும் மற்றும் HTML பக்கங்களை அலச வேண்டும்.

இந்த கட்டுரை எப்போதுமே வலை ஸ்கிராப்பிங்கை எவ்வாறு பயன்படுத்துவது என்பதை அறிய விரும்புவோருக்கானது, ஆனால் அதில் கைகளைப் பெறவில்லை அல்லது எங்கு தொடங்குவது என்று தெரியவில்லை.

பணி

ஏற்கனவே பார்த்த திரைப்படங்களைப் பற்றிய தரவைப் பிரித்தெடுப்பதே எங்கள் பணி: திரைப்படத்தின் தலைப்பு, பார்க்கும் தேதி மற்றும் நேரம், பயனரின் மதிப்பீடு.

உண்மையில், எங்கள் பணி 2 நிலைகளில் செய்யப்பட உள்ளது:

நிலை 1: HTML பக்கங்களை பதிவிறக்கி சேமிக்கவும்

நிலை 2: மேலதிக பகுப்பாய்விற்கு ஏற்ற வடிவத்தில் HTML ஐ அலசவும் (csv, json, pandas dataframe etc.)

கருவிகள்

Http- கோரிக்கைகளை அனுப்ப நிறைய பைதான்-நூலகங்கள் உள்ளன. மிகவும் பிரபலமான மற்றும் மிகவும் எளிமையானது கோரிக்கைகள்.

HTML பாகுபடுத்தலுக்கான நூலகத்தைத் தேர்ந்தெடுப்பதும் அவசியம்.

BeatifulSoup, lxml

HTML ஐ பாகுபடுத்துவதற்கான மிகவும் பிரபலமான இரண்டு நூலகங்கள் இவை மற்றும் அவற்றில் ஒன்றைத் தேர்ந்தெடுப்பது தனிப்பட்ட விருப்பம். மேலும், இந்த நூலகங்கள் ஒருவருக்கொருவர் நெருக்கமாக இணைக்கப்பட்டுள்ளன: பியூட்டிஃபுல்சூப் எல்எக்ஸ்எம்எல்லை முடுக்கம் செய்வதற்கான உள் பாகுபடுத்தியாகப் பயன்படுத்தத் தொடங்கியது, மற்றும் எல்எக்ஸ்எம்எல்லில், ஒரு சூப்பர்சர் தொகுதி சேர்க்கப்பட்டது. அணுகுமுறைகளை ஒப்பிட்டுப் பார்க்க, தரவை BeautifulSoup உடன் அலசுவேன் மற்றும் lxml.html தொகுதியில் எக்ஸ்பாத் தேர்வாளர்களைப் பயன்படுத்துகிறேன்.

தரவைப் பதிவிறக்குகிறது

தரவைப் பதிவிறக்குவதைத் தொடங்குவோம். முதலில், பக்கத்தை url மூலம் பெற்று உள்ளூர் கோப்பில் சேமிக்க முயற்சிப்போம்.

இதன் விளைவாக வரும் கோப்பைத் திறந்து, அது அவ்வளவு எளிதல்ல என்பதைக் காண்கிறோம்: தளம் எங்களை ரோபோவாகக் கருதியது மற்றும் தரவைக் காட்டாது.

தளம் எவ்வாறு செயல்படுகிறது என்பதைக் கண்டுபிடிப்போம்

தளத்திலிருந்து தகவல்களைப் பெறுவதில் உலாவிக்கு எந்தப் பிரச்சினையும் இல்லை. இது கோரிக்கையை எவ்வளவு சரியாக அனுப்புகிறது என்று பார்ப்போம். இதைச் செய்ய, உலாவியில் உள்ள "டெவலப்பர் கருவிகள்" இல் உள்ள "நெட்வொர்க்" பேனலைப் பயன்படுத்துகிறோம் (இதற்காக நான் ஃபயர்பக் பயன்படுத்துகிறேன்), வழக்கமாக, எங்களுக்குத் தேவையான கோரிக்கை மிக நீண்டது.

நாம் பார்க்க முடியும் என, உலாவி யூசர் ஏஜென்ட், குக்கீ மற்றும் மற்றொரு அளவுருக்கள் ஆகிய தலைப்புகளுக்கும் அனுப்புகிறது. முதலில், சரியான யூசர் ஏஜெண்டை ஒரு தலைப்புக்கு அனுப்ப முயற்சிப்போம்.

இந்த நேரத்தில் நாங்கள் வெற்றிகரமாக இருக்கிறோம், இப்போது எங்களுக்கு தேவையான தரவு வழங்கப்பட்டுள்ளது. சில நேரங்களில் தளம் குக்கீயின் செல்லுபடியையும் சரிபார்க்கிறது என்பது கவனிக்கத்தக்கது, இந்த விஷயத்தில் கோரிக்கைகள் நூலகத்தில் அமர்வுகள் உதவும்.

எல்லா கட்டணங்களையும் பதிவிறக்கவும்

இப்போது ஒரு பக்கத்தை கட்டணங்களுடன் சேமிக்க முடிகிறது. ஆனால் வழக்கமாக பயனருக்கு நிறைய விகிதங்கள் உள்ளன, மேலும் எல்லா பக்கங்களிலும் மீண்டும் சொல்வது அவசியம். எங்களுக்கு விருப்பமான பக்க எண் நேரடியாக URL க்கு மாற்றுவது எளிது.

HTML இலிருந்து தரவை சேகரித்தல்

இப்போது HTML இலிருந்து தரவை சேகரிப்பதற்கு நேரடியாக வருவோம். உலாவியில் "உறுப்பு ஆய்வு" செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் HTML பக்கம் எவ்வாறு கட்டமைக்கப்பட்டுள்ளது என்பதைப் புரிந்துகொள்வதற்கான எளிய வழி. இந்த வழக்கில், எல்லாம் மிகவும் எளிதானது: விகிதங்களுடன் கூடிய முழு அட்டவணையும் குறிச்சொல்லில் உள்ளது. இந்த முனையைத் தேர்ந்தெடுக்கவும்:

bs4 இறக்குமதி BeautifulSoup இலிருந்து

lxml இறக்குமதி html இலிருந்து

# அழகான சூப்

சூப் = அழகான சூப் (உரை)

film_list = soup.find ('div', ('class': 'profileFilmsList'))

# lxml

tree = html.fromstring (உரை)

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

திரைப்படத்தின் ரஷ்ய தலைப்பு மற்றும் திரைப்படத்தின் பக்கத்திற்கான இணைப்பை எவ்வாறு வெளியேற்றுவது என்பதைக் கற்றுக்கொள்வோம் (உரை மற்றும் பண்புக்கூறு மதிப்பை எவ்வாறு பெறுவது என்பதும்).

நீங்கள் ஆங்கிலத்தில் தலைப்பை பிரித்தெடுக்க வேண்டுமானால் "nameRus" ஐ "nameEng" என்று மாற்றவும்.

முடிவுகள்

வலைத்தளங்களை எவ்வாறு அலசுவது என்பதை நாங்கள் கற்றுக்கொண்டோம், நூலகங்கள் கோரிக்கைகள், பியூட்டிஃபுல்சூப் மற்றும் எல்எக்ஸ்எம்எல் ஆகியவற்றை அறிந்தோம், அத்துடன் கினோபோயிஸ்கில் ஏற்கனவே பார்த்த திரைப்படங்களின் மேலதிக பகுப்பாய்விற்கு பொருத்தமான தரவைப் பெற்றோம்.