ஜாவாஸ்கிரிப்ட் சார்ந்த பக்கங்களிலிருந்து உள்ளடக்கத்தைப் பதிவிறக்குவதில் உள்ள சவால்களைச் சமாளித்தல்
இணையப் பக்கங்களிலிருந்து பதிவிறக்கங்களைத் தானியக்கமாக்க பைத்தானைப் பயன்படுத்தும் போது, வலைப்பக்கமானது சரியான செயல்பாட்டிற்கு JavaScript இயக்கப்பட வேண்டிய சூழ்நிலைகளை நீங்கள் சந்திக்க நேரிடும். நூலகங்கள் விரும்புவது போல் இது வெறுப்பாக இருக்கலாம் ஜாவாஸ்கிரிப்ட் செயல்படுத்தலைக் கையாள வடிவமைக்கப்படவில்லை. அத்தகைய ஒரு எடுத்துக்காட்டு JFrog ஆர்டிஃபாக்டரி ஆகும், இதற்கு ஜாவாஸ்கிரிப்ட் உள்ளடக்கத்தைக் காட்ட அல்லது பதிவிறக்கங்களை அனுமதிக்க வேண்டும்.
பாரம்பரிய வலை ஸ்கிராப்பிங்கில், நீங்கள் பயன்படுத்தலாம் அல்லது வலைப்பக்க உள்ளடக்கத்தைப் பெற. இருப்பினும், ஜாவாஸ்கிரிப்டை பெரிதும் நம்பியிருக்கும் பக்கங்களுக்கு, டைனமிக் உள்ளடக்க ரெண்டரிங்கைக் கையாள முடியாததால், இந்த நூலகங்கள் குறைவாகவே இருக்கும். எனவே, இந்த வரம்பைக் கடக்க உங்களுக்கு மேம்பட்ட கருவிகள் தேவைப்படும்.
அதிர்ஷ்டவசமாக, ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட பக்கங்களைக் கையாள பைதான் மாற்றுகளை வழங்குகிறது. போன்ற கருவிகள் அல்லது முழு உலாவி எமுலேஷனை இயக்கவும், இது போன்ற பக்கங்களில் இருந்து உள்ளடக்கத்துடன் தொடர்பு கொள்ளவும் பதிவிறக்கவும் உங்களை அனுமதிக்கிறது. இந்த நூலகங்கள் JavaScript முழுமையாக ஆதரிக்கப்படும் ஒரு உண்மையான உலாவி சூழலை உருவகப்படுத்த முடியும்.
பயன்படுத்துவதில் இருந்து எப்படி மாறுவது என்பதை இந்தக் கட்டுரை ஆராயும் ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட வலைப்பக்கங்களிலிருந்து உள்ளடக்கத்தை அணுகுவதற்கும் பதிவிறக்குவதற்கும் மிகவும் திறமையான நூலகங்களுக்கு, உங்கள் தன்னியக்க பணிகள் சீராக இயங்குவதை உறுதிசெய்யவும்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
webdriver.Chrome() | செலினியத்தில் குரோம் உலாவி நிகழ்வைத் துவக்குகிறது. ஜாவாஸ்கிரிப்ட்-கனமான பக்கங்களை ஏற்றுவதற்கு உலாவி சூழலை உருவகப்படுத்துவதற்கு இந்தக் கட்டளை முக்கியமானது. |
options.add_argument('--headless') | ஹெட்லெஸ் பயன்முறையில் இயங்க செலினியம் உலாவியை உள்ளமைக்கிறது, அதாவது உலாவி GUI இல்லாமல் இயங்குகிறது. உலாவி சாளரத்தைக் காட்டாமல் தானியங்கு ஸ்கிரிப்ட்களை இயக்க இது பயனுள்ளதாக இருக்கும். |
time.sleep() | ஒரு குறிப்பிட்ட நேரத்திற்கு ஸ்கிரிப்ட்டின் செயல்பாட்டை இடைநிறுத்துகிறது. இந்த சூழலில், அடுத்த செயல்களைத் தொடர்வதற்கு முன், வலைப்பக்கத்தில் ஜாவாஸ்கிரிப்ட் முழுவதுமாக ஏற்றப்படுவதற்கு இது நேரத்தை அனுமதிக்கிறது. |
page.content() | Pyppeteer இல், இந்த கட்டளையானது வலைப்பக்கத்தின் முழு உள்ளடக்கத்தையும் மீட்டெடுக்கிறது, இதில் மாறும் வகையில் ரெண்டர் செய்யப்பட்ட ஜாவாஸ்கிரிப்ட் உள்ளடக்கம் அடங்கும், இது இறுதி HTML வெளியீட்டைச் சேமிப்பதற்கு அவசியம். |
await page.waitForSelector() | தொடர்வதற்கு முன் ஒரு குறிப்பிட்ட HTML உறுப்பு ஏற்றப்படும் வரை காத்திருக்கிறது. ஜாவாஸ்கிரிப்ட்-கனமான பக்கங்களைக் கையாளும் போது, உள்ளடக்கத்தைப் பிரித்தெடுப்பதற்கு முன் தேவையான கூறுகள் வழங்கப்படுவதை உறுதிசெய்ய இது மிகவும் முக்கியமானது. |
session.get() | கோரிக்கைகள்-HTML இலிருந்து வரும் இந்த கட்டளை, வழங்கப்பட்ட URL க்கு GET கோரிக்கையை அனுப்புகிறது. ஜாவாஸ்கிரிப்ட் கூறுகளை வழங்குவதற்கு முன் வலைப்பக்கத்தைப் பெற இது இங்கே பயன்படுத்தப்படுகிறது. |
response.html.render() | கோரிக்கைகள்-HTML நூலகத்தில் உள்ள வலைப்பக்கத்தில் JavaScript ஐ இயக்குகிறது. முழு உலாவி தேவையில்லாமல் ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட பக்கங்களைக் கையாளுவதற்கு இந்தக் கட்டளை மையமானது. |
launch(headless=True) | செலினியத்தைப் போலவே பைப்பீட்டரில் ஹெட்லெஸ் உலாவியை அறிமுகப்படுத்துகிறது. இது வரைகலை உலாவி சாளரத்தைத் திறக்காமலேயே ஜாவாஸ்கிரிப்ட்-கனமான வலைப்பக்கங்களை அணுகவும் தொடர்பு கொள்ளவும் ஸ்கிரிப்டை அனுமதிக்கிறது. |
with open() | பைத்தானில் எழுத ஒரு கோப்பை திறக்கிறது. இந்த வழக்கில், வலைப்பக்கத்திலிருந்து மீட்டெடுக்கப்பட்ட HTML உள்ளடக்கத்தை மேலும் செயலாக்க அல்லது பகுப்பாய்வுக்காக ஒரு கோப்பில் சேமிக்க இது பயன்படுகிறது. |
ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட பக்கங்களிலிருந்து பதிவிறக்க பைத்தானைப் பயன்படுத்துதல்
பாரம்பரிய பைதான் வலை ஸ்கிராப்பிங்கில், நூலகங்கள் போன்றவை வலைப்பக்கங்களில் இருந்து நேரடியாக உள்ளடக்கத்தைப் பதிவிறக்கப் பயன்படுத்தப்படுகின்றன. இருப்பினும், ஜேஃப்ராக் ஆர்ட்டிஃபாக்டரி போன்ற ஜாவாஸ்கிரிப்ட்-கனமான தளங்களைக் கையாளும் போது, இந்த நூலகங்கள் குறைகின்றன. முதன்மைக் காரணம் என்னவென்றால், வலைப்பக்கத்திற்கு ஜாவாஸ்கிரிப்ட் உள்ளடக்கத்தை மாறும் வகையில் ஏற்ற வேண்டும் கோரிக்கைகள் கையாள முடியாது. இதைப் போக்க, நாங்கள் போன்ற தீர்வுகளை அறிமுகப்படுத்தினோம் , , மற்றும் கோரிக்கைகள்-HTML, இது JavaScript செயல்படுத்தலை அனுமதிக்கிறது. இந்த கருவிகள் உலாவி சூழலை உருவகப்படுத்துகின்றன, ஜாவாஸ்கிரிப்ட் சார்ந்த வலைப்பக்கங்களிலிருந்து உள்ளடக்கத்தை அணுகவும் பதிவிறக்கவும் பைதான் ஸ்கிரிப்ட்களை செயல்படுத்துகிறது.
செலினியத்தைப் பயன்படுத்தும் முதல் அணுகுமுறை ஜாவாஸ்கிரிப்டை வழங்கக்கூடிய உலாவி நிகழ்வைத் தொடங்குவதை உள்ளடக்கியது. பக்கத்தின் மூலக் குறியீட்டைப் பிரித்தெடுப்பதற்கு முன், பக்கம் முழுமையாக ஏற்றப்படும் வரை காத்திருக்க இது அனுமதிக்கிறது. பக்க உள்ளடக்கம் மாறும் வகையில் உருவாக்கப்படும் போது இது மிகவும் பயனுள்ளதாக இருக்கும். உதாரணமாக, பயன்படுத்தி கட்டளை ஒரு உலாவியை துவக்கி பின்னர் இலக்கு URL ஐ அணுகும். பயன்படுத்துவதன் மூலம் , ஜாவாஸ்கிரிப்ட் ஏற்றுவதற்கு போதுமான நேரம் கொடுக்கப்பட்டிருப்பதை உறுதிசெய்கிறோம். இறுதியாக, பிரித்தெடுக்கப்பட்ட பக்க உள்ளடக்கம் ஒரு கோப்பில் சேமிக்கப்பட்டு, நிலையான வடிவத்தில் தேவையான வலைப்பக்கத்தை எங்களுக்கு வழங்குகிறது.
இரண்டாவது அணுகுமுறையில், நாங்கள் Puppeteer ஐப் பயன்படுத்தினோம், Puppeteer க்கான பைதான் ரேப்பர். Pyppeteer என்பது ஜாவாஸ்கிரிப்ட் செயல்படுத்தலைக் கையாள வடிவமைக்கப்பட்ட மற்றொரு சக்திவாய்ந்த கருவியாகும். செலினியத்தைப் போலவே, Pyppeteer ஒரு தலையில்லாத உலாவியைத் தொடங்குகிறது, அது வலைப்பக்கத்திற்குச் செல்லும், ஜாவாஸ்கிரிப்ட் இயக்கப்படும் வரை காத்திருக்கிறது, பின்னர் உள்ளடக்கத்தை மீட்டெடுக்கிறது. Pyppeteer ஐப் பயன்படுத்துவதன் முக்கிய நன்மை என்னவென்றால், உலாவல் அமர்வின் மீது கூடுதல் கட்டுப்பாட்டை வழங்குகிறது, அதாவது கட்டளைகளைப் பயன்படுத்தி குறிப்பிட்ட கூறுகள் ஏற்றப்படும் வரை காத்திருக்கிறது . ஸ்கிரிப்ட் பதிவிறக்க முயற்சிக்கும் முன், தேவையான பக்க உள்ளடக்கம் முழுமையாக வழங்கப்படுவதை இது உறுதி செய்கிறது.
மூன்றாவது தீர்வு கோரிக்கைகள்-HTML நூலகத்தைப் பயன்படுத்துகிறது, இது Selenium அல்லது Pyppeteer போன்ற முழு உலாவி தேவையில்லாமல் JavaScript ஐ ரெண்டரிங் செய்யும் செயல்முறையை எளிதாக்குகிறது. கோரிக்கைகள்-HTML உடன், நாம் பயன்படுத்தி HTTP அமர்வைத் தொடங்கலாம் வலைப்பக்கத்தைப் பெற, பின்னர் ஜாவாஸ்கிரிப்டை இயக்கவும் முறை. முழு உலாவி உருவகப்படுத்துதல் அணுகுமுறைகளுடன் ஒப்பிடும்போது இந்தத் தீர்வு இலகுவானது மற்றும் முழு உலாவியின் மேல்நிலை உங்களுக்குத் தேவைப்படாதபோது பெரும்பாலும் மிகவும் பொருத்தமானது. எளிமையான ஜாவாஸ்கிரிப்ட் செயல்பாடுகளுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும், இது குறிப்பிட்ட பயன்பாட்டு நிகழ்வுகளுக்கு உகந்த தேர்வாக அமைகிறது.
பைத்தானில் ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட பக்கங்களுடன் URLகளைப் பதிவிறக்குகிறது
இந்தத் தீர்வு, ஜாவாஸ்கிரிப்ட்-கனமான பக்கங்களைக் கையாள, பைதான் நூலகமான செலினியத்தைப் பயன்படுத்துகிறது. செலினியம் ஒரு இணைய உலாவியைக் கட்டுப்படுத்த உங்களை அனுமதிக்கிறது, ஜாவாஸ்கிரிப்ட் செயல்படுத்தலை உருவகப்படுத்தவும், டைனமிக் உள்ளடக்கத்தை மீட்டெடுக்கவும் உதவுகிறது.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
def download_using_selenium(url, username, apikey):
# Setup Selenium WebDriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get(url)
time.sleep(3) # Wait for JavaScript to load
# Assuming basic authentication via URL for this example
auth_url = f'{url}?username={username}&password={apikey}'
driver.get(auth_url)
# Extract content
page_content = driver.page_source
# Save to file
with open("download_selenium.html", "w") as file:
file.write(page_content)
driver.quit()
print("Download complete using Selenium.")
ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட பக்கங்களைப் பதிவிறக்குவதற்கு Pyppeteer ஐப் பயன்படுத்துதல்
இந்தத் தீர்வு Pyppeteer ஐப் பயன்படுத்துகிறது, இது Puppeteer இன் பைதான் போர்ட் (தலையில்லாத உலாவி), இது JavaScript ஐ இயக்கவும் மற்றும் பக்க உள்ளடக்கத்தை மாறும் வகையில் மீட்டெடுக்கவும் முடியும்.
import asyncio
from pyppeteer import launch
async def download_using_pyppeteer(url, username, apikey):
# Launch headless browser
browser = await launch(headless=True)
page = await browser.newPage()
# Basic auth and URL loading
auth_url = f'{url}?username={username}&password={apikey}'
await page.goto(auth_url)
# Wait for the JavaScript to load
await page.waitForSelector('body')
# Extract page content
content = await page.content()
# Save to file
with open("download_pyppeteer.html", "w") as file:
file.write(content)
await browser.close()
print("Download complete using Pyppeteer.")
# Run the async function
asyncio.get_event_loop().run_until_complete(download_using_pyppeteer("https://example.com", "user", "key"))
JavaScript ரெண்டரிங் கையாளுவதற்கு கோரிக்கைகள்-HTML ஐப் பயன்படுத்துதல்
இந்த அணுகுமுறை கோரிக்கைகள்-HTML நூலகத்தைப் பயன்படுத்துகிறது, இது முழு உலாவியும் தேவையில்லாமல் எளிதாக ஜாவாஸ்கிரிப்ட் ரெண்டரிங் செய்ய அனுமதிக்கிறது.
from requests_html import HTMLSession
def download_using_requests_html(url, username, apikey):
session = HTMLSession()
# Make the request
auth_url = f'{url}?username={username}&password={apikey}'
response = session.get(auth_url)
# Render the JavaScript
response.html.render()
# Save the page content
with open("download_requests_html.html", "w") as file:
file.write(response.html.html)
print("Download complete using Requests-HTML.")
download_using_requests_html("https://example.com", "user", "key")
ஜாவாஸ்கிரிப்ட்-இயக்கப்பட்ட பக்கங்களுக்கான பைதான் வலை ஸ்கிராப்பிங்கை மேம்படுத்துகிறது
ஜாவாஸ்கிரிப்ட்-கனமான வலைப்பக்கங்களை ஸ்கிராப் செய்யும் போது, ஒரு பொதுவான சவாலானது அங்கீகாரம் அல்லது API முக்கிய கட்டுப்பாடுகளைத் தவிர்ப்பதாகும், குறிப்பாக JFrog Artifactory போன்ற பயன்பாடுகளில். செலினியம் மற்றும் பைப்பீட்டீர் போன்ற கருவிகள் மூலம் உலாவி ஆட்டோமேஷனை நாங்கள் முன்பு ஆராய்ந்தபோது, HTTP பதில்களைக் கையாள்வதில் அதிக கவனம் செலுத்தும் பிற தீர்வுகள் உள்ளன. எடுத்துக்காட்டாக, APIகளை ஒருங்கிணைத்தல் மற்றும் தலைப்புகளை மேம்படுத்துதல் ஆகியவை முழு உலாவி உருவகப்படுத்துதலின் மேல்நிலை இல்லாமல், அங்கீகாரத் தூண்டுதல்களைத் தவிர்த்து அல்லது மேலும் குறிப்பிட்ட உள்ளடக்கத்தை மீட்டெடுக்க உதவும்.
உள்நுழைவு அல்லது API டோக்கன் உள்ளீடு போன்ற சிக்கலான படிவங்களை இந்த நூலகங்கள் எவ்வாறு கையாளுகின்றன என்பது மற்றொரு முக்கிய அம்சமாகும். ஒரு பொதுவான தீர்வு, பைதான் நூலகங்களைப் பயன்படுத்தி படிவ சமர்ப்பிப்புகளைப் பிரதிபலிப்பதாகும் . இது JavaScript செயல்படுத்தல், ஆதாரங்களைச் சேமிப்பது இல்லாமல் சர்வர் பக்க அங்கீகாரத்துடன் தடையற்ற தொடர்புகளை அனுமதிக்கிறது. கூடுதலாக, மிகவும் பாதுகாப்பான பக்கங்களுக்கு, அமர்வு மேலாண்மை மற்றும் டோக்கன் அடிப்படையிலான அங்கீகாரம் போன்ற அம்சங்களை உங்கள் ஸ்கிரிப்ட்டில் சேர்ப்பது செயல்திறனை கணிசமாக மேம்படுத்தும்.
CAPTCHA சவால்கள் போன்ற சாத்தியமான சிக்கல்களைப் பற்றி விவாதிப்பதும் முக்கியம், இது பணிகளை ஸ்கிராப்பிங் செய்யும் போது அல்லது தானியங்குபடுத்தும் போது தடையாக இருக்கும். CAPTCHA களை சமாளிக்க, சில டெவலப்பர்கள் CAPTCHA ஐ தானாகவே தீர்க்கும் மூன்றாம் தரப்பு சேவைகளைத் தேர்வு செய்கிறார்கள். மற்றவை இயந்திர கற்றல் வழிமுறைகளை ஒருங்கிணைக்கின்றன, இருப்பினும் இது மிகவும் சிக்கலானதாக இருக்கலாம். இந்த கூடுதல் பாதுகாப்பு நடவடிக்கைகளைப் புரிந்துகொள்வது, ஜாவாஸ்கிரிப்ட் அடிப்படையிலான இயங்குதளங்களுடன் தொடர்பு கொள்ளும்போது உங்கள் பைதான் ஸ்கிரிப்ட் திறமையாக இயங்குவதை உறுதிசெய்து, பரந்த அளவிலான சவால்களைக் கையாள உங்கள் ஸ்கிரிப்ட்களைத் தயாரிக்க உதவுகிறது.
- ஜாவாஸ்கிரிப்ட்-ரெண்டர் செய்யப்பட்ட உள்ளடக்கத்தை பைதான் மூலம் எப்படி ஸ்கிராப் செய்வது?
- போன்ற கருவிகளைப் பயன்படுத்தவும் , , அல்லது வலைப்பக்கங்களிலிருந்து உள்ளடக்கத்தைப் பெறும்போது JavaScript செயல்படுத்துதலைக் கையாள.
- JavaScript-கனமான வலைத்தளங்களைக் கையாள்வதற்கான சிறந்த கருவி எது?
- சிக்கலான ஜாவாஸ்கிரிப்ட்-கனமான தளங்களுக்கு பெரும்பாலும் சிறந்த தேர்வாகும், ஏனெனில் இது உண்மையான உலாவி தொடர்புகளை பிரதிபலிக்கிறது. மிகவும் பயனுள்ளதாகவும் உள்ளது.
- இணைய ஸ்கிராப்பிங்கில் அங்கீகாரத்தை எவ்வாறு கையாள்வது?
- நீங்கள் பயன்படுத்தலாம் HTTP தலைப்புகளில் API விசைகள் மற்றும் டோக்கன்களை அனுப்புவதன் மூலம் அடிப்படை மற்றும் டோக்கன் அடிப்படையிலான அங்கீகாரத்தைக் கையாள நூலகம்.
- ஸ்கிராப்பிங் செய்யும் போது நான் CAPTCHA ஐ கடந்து செல்லலாமா?
- ஆம், CAPTCHA-தீர்க்கும் சேவைகளைப் பயன்படுத்துவதன் மூலமோ அல்லது இயந்திர கற்றல் அல்காரிதங்களை ஒருங்கிணைப்பதன் மூலமோ. இருப்பினும், இது சிக்கலைச் சேர்க்கிறது மற்றும் எல்லா பயன்பாட்டு நிகழ்வுகளுக்கும் நடைமுறையில் இருக்காது.
- எளிய ஸ்கிராப்பிங் பணிகளுக்கு உலாவி ஆட்டோமேஷனைத் தவிர்க்க முடியுமா?
- ஆம், எளிமையான பணிகளுக்கு, தி நூலகம் அல்லது முழு உலாவி ஆட்டோமேஷன் தேவையில்லாமல் தரவைப் பெறுவதைக் கையாள முடியும்.
ஜாவாஸ்கிரிப்ட்-கனமான வலைப்பக்கங்களிலிருந்து உள்ளடக்கத்தை அணுகுவதற்கு அடிப்படை HTTP கோரிக்கைகளை விட அதிகம் தேவைப்படுகிறது. Selenium மற்றும் Pyppeteer போன்ற கருவிகளை மேம்படுத்துவதன் மூலம், JavaScript ஐ இயக்கும் உலாவி சூழல்களை நாம் உருவகப்படுத்தலாம் மற்றும் வலைப்பக்கத்தின் முழு உள்ளடக்கத்தையும் மீட்டெடுக்கலாம். இந்த கருவிகள் ஆட்டோமேஷன் பணிகளுக்கு நெகிழ்வுத்தன்மையை வழங்குகின்றன.
உலாவி தன்னியக்கமாக்கல் அதிக வளம் மிகுந்ததாக இருந்தாலும், சிக்கலான பக்கங்களைக் கையாளுவதற்கு இது நம்பகமான தீர்வாகும். எளிமையான நிகழ்வுகளுக்கு, கோரிக்கைகள்-HTML ஒரு இலகுரக மாற்றாக இருக்கலாம். சரியான கருவியைத் தேர்ந்தெடுப்பது தளத்தின் சிக்கலான தன்மை மற்றும் உங்கள் திட்டத்தின் குறிப்பிட்ட தேவைகளைப் பொறுத்தது.
- ஜாவாஸ்கிரிப்ட்-கனமான பக்கங்களுடன் வலை ஸ்கிராப்பிங்கிற்கு செலினியத்தைப் பயன்படுத்துவது பற்றிய தகவல் அதிகாரப்பூர்வ செலினியம் ஆவணத்தில் இருந்து குறிப்பிடப்பட்டுள்ளது. அதை இங்கே அணுகவும்: செலினியம் ஆவணம் .
- டைனமிக் ஜாவாஸ்கிரிப்ட் உள்ளடக்கத்தைக் கையாளும் பைப்பீடீரின் செயலாக்கம், பைப்பீடீரின் கிட்ஹப் பக்கத்தின் விவரங்களை அடிப்படையாகக் கொண்டது. நீங்கள் இங்கே மேலும் காணலாம்: Pyppeteer GitHub .
- கோரிக்கைகள் மற்றும் கோரிக்கைகள்-HTML நூலகங்களுக்கு, நுண்ணறிவு கோரிக்கைகள்-HTML ஆவணப்படுத்தலில் இருந்து பெறப்பட்டது, இது பைத்தானில் ஜாவாஸ்கிரிப்ட் ரெண்டரிங் கையாள்வது பற்றிய ஆழமான புரிதலை வழங்குகிறது: கோரிக்கைகள்-HTML ஆவணம் .
- அங்கீகாரம் மற்றும் API பயன்பாட்டை நிர்வகிப்பதற்கான சிறந்த நடைமுறைகள், Real Python இல் காணப்படும் பைதான் வலை ஸ்கிராப்பிங் நுட்பங்கள் பற்றிய கட்டுரைகளால் ஈர்க்கப்பட்டன: உண்மையான மலைப்பாம்பு .