JavaScript-ਨਿਰਭਰ ਪੰਨਿਆਂ ਤੋਂ ਸਮੱਗਰੀ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਵਿੱਚ ਚੁਣੌਤੀਆਂ ਨੂੰ ਪਾਰ ਕਰਨਾ
ਵੈੱਬਪੰਨਿਆਂ ਤੋਂ ਡਾਉਨਲੋਡਸ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰਨ ਲਈ ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਤੁਹਾਨੂੰ ਅਜਿਹੀਆਂ ਸਥਿਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ ਜਿੱਥੇ ਇੱਕ ਵੈਬਪੇਜ ਨੂੰ ਸਹੀ ਕੰਮ ਕਰਨ ਲਈ JavaScript ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਨਿਰਾਸ਼ਾਜਨਕ ਹੋ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਲਾਇਬ੍ਰੇਰੀਆਂ JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਤਿਆਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ। ਅਜਿਹਾ ਇੱਕ ਉਦਾਹਰਨ ਹੈ JFrog ਆਰਟੀਫੈਕਟਰੀ, ਜਿਸ ਵਿੱਚ ਸਮੱਗਰੀ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਜਾਂ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ JavaScript ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਰਵਾਇਤੀ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਵਿੱਚ, ਤੁਸੀਂ ਵਰਤ ਸਕਦੇ ਹੋ ਜਾਂ ਵੈੱਬਪੇਜ ਸਮੱਗਰੀ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ. ਹਾਲਾਂਕਿ, ਉਹਨਾਂ ਪੰਨਿਆਂ ਲਈ ਜੋ JavaScript 'ਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਨਿਰਭਰ ਕਰਦੇ ਹਨ, ਇਹ ਲਾਇਬ੍ਰੇਰੀਆਂ ਘੱਟ ਹੁੰਦੀਆਂ ਹਨ ਕਿਉਂਕਿ ਉਹ ਗਤੀਸ਼ੀਲ ਸਮੱਗਰੀ ਰੈਂਡਰਿੰਗ ਨੂੰ ਨਹੀਂ ਸੰਭਾਲ ਸਕਦੀਆਂ। ਇਸ ਤਰ੍ਹਾਂ, ਤੁਹਾਨੂੰ ਇਸ ਸੀਮਾ ਨੂੰ ਦੂਰ ਕਰਨ ਲਈ ਵਧੇਰੇ ਉੱਨਤ ਸਾਧਨਾਂ ਦੀ ਜ਼ਰੂਰਤ ਹੋਏਗੀ.
ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਪਾਈਥਨ JavaScript-ਸਮਰਥਿਤ ਪੰਨਿਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਵਿਕਲਪ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਵਰਗੇ ਸੰਦ ਜਾਂ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਇਮੂਲੇਸ਼ਨ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਅਜਿਹੇ ਪੰਨਿਆਂ ਤੋਂ ਸਮੱਗਰੀ ਨੂੰ ਇੰਟਰੈਕਟ ਅਤੇ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੱਕ ਅਸਲੀ ਬ੍ਰਾਊਜ਼ਰ ਵਾਤਾਵਰਨ ਦੀ ਨਕਲ ਕਰ ਸਕਦੀਆਂ ਹਨ ਜਿੱਥੇ JavaScript ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਮਰਥਿਤ ਹੈ।
ਇਹ ਲੇਖ ਇਸ ਦੀ ਪੜਚੋਲ ਕਰੇਗਾ ਕਿ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ JavaScript-ਸਮਰੱਥ ਵੈਬਪੇਜਾਂ ਤੋਂ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਅਤੇ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਵਧੇਰੇ ਸਮਰੱਥ ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਿੱਚ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਤੁਹਾਡੇ ਆਟੋਮੇਸ਼ਨ ਕਾਰਜਾਂ ਨੂੰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚਲਾਇਆ ਜਾ ਸਕੇ।
| ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
|---|---|
| webdriver.Chrome() | ਸੇਲੇਨਿਅਮ ਵਿੱਚ ਇੱਕ Chrome ਬ੍ਰਾਊਜ਼ਰ ਉਦਾਹਰਨ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ JavaScript-ਭਾਰੀ ਪੰਨਿਆਂ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਬ੍ਰਾਊਜ਼ਰ ਵਾਤਾਵਰਨ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। |
| options.add_argument('--headless') | ਸੇਲੇਨਿਅਮ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਚਲਾਉਣ ਲਈ ਕੌਂਫਿਗਰ ਕਰਦਾ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਬ੍ਰਾਊਜ਼ਰ GUI ਤੋਂ ਬਿਨਾਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਇਹ ਬ੍ਰਾਊਜ਼ਰ ਵਿੰਡੋ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੇ ਬਿਨਾਂ ਸਵੈਚਲਿਤ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਚਲਾਉਣ ਲਈ ਉਪਯੋਗੀ ਹੈ। |
| time.sleep() | ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮੇਂ ਲਈ ਸਕ੍ਰਿਪਟ ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਰੋਕਦਾ ਹੈ। ਇਸ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਅਗਲੀ ਕਾਰਵਾਈਆਂ ਨਾਲ ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਵੈੱਬਪੇਜ 'ਤੇ ਜਾਵਾਸਕ੍ਰਿਪਟ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਹੋਣ ਲਈ ਸਮਾਂ ਦਿੰਦਾ ਹੈ। |
| page.content() | ਪਾਈਪੀਟੀਅਰ ਵਿੱਚ, ਇਹ ਕਮਾਂਡ ਵੈਬ ਪੇਜ ਦੀ ਸਮੁੱਚੀ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਰੈਂਡਰ ਕੀਤੀ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਸਮੱਗਰੀ ਸ਼ਾਮਲ ਹੈ, ਜੋ ਕਿ ਅੰਤਿਮ HTML ਆਉਟਪੁੱਟ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। |
| await page.waitForSelector() | ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਖਾਸ HTML ਤੱਤ ਲੋਡ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ JavaScript-ਭਾਰੀ ਪੰਨਿਆਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਕਿ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਲੋੜੀਂਦੇ ਤੱਤ ਪੇਸ਼ ਕੀਤੇ ਗਏ ਹਨ। |
| session.get() | Requests-HTML ਤੋਂ ਇਹ ਕਮਾਂਡ ਪ੍ਰਦਾਨ ਕੀਤੇ URL ਨੂੰ ਇੱਕ GET ਬੇਨਤੀ ਭੇਜਦੀ ਹੈ। ਕਿਸੇ ਵੀ JavaScript ਭਾਗਾਂ ਨੂੰ ਰੈਂਡਰ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵੈੱਬਪੇਜ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇੱਥੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
| response.html.render() | Requests-HTML ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਅੰਦਰ ਇੱਕ ਵੈੱਬਪੇਜ 'ਤੇ JavaScript ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ JavaScript-ਸਮਰਥਿਤ ਪੰਨਿਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਕੇਂਦਰੀ ਹੈ। |
| launch(headless=True) | ਸੇਲੇਨਿਅਮ ਦੇ ਸਮਾਨ ਪਾਈਪਪੀਟੀਅਰ ਵਿੱਚ ਇੱਕ ਹੈੱਡਲੈੱਸ ਬ੍ਰਾਊਜ਼ਰ ਲਾਂਚ ਕਰਦਾ ਹੈ। ਇਹ ਸਕ੍ਰਿਪਟ ਨੂੰ ਗ੍ਰਾਫਿਕਲ ਬ੍ਰਾਊਜ਼ਰ ਵਿੰਡੋ ਖੋਲ੍ਹਣ ਤੋਂ ਬਿਨਾਂ JavaScript-ਭਾਰੀ ਵੈਬਪੰਨਿਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। |
| with open() | ਪਾਈਥਨ ਵਿੱਚ ਲਿਖਣ ਲਈ ਇੱਕ ਫਾਈਲ ਖੋਲ੍ਹਦਾ ਹੈ. ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਸਦੀ ਵਰਤੋਂ ਵੈਬਪੇਜ ਤੋਂ ਪ੍ਰਾਪਤ ਕੀਤੀ ਗਈ HTML ਸਮੱਗਰੀ ਨੂੰ ਅੱਗੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਜਾਂ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। |
JavaScript-ਸਮਰੱਥ ਪੰਨਿਆਂ ਤੋਂ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਰਵਾਇਤੀ ਪਾਈਥਨ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਵਿੱਚ, ਲਾਇਬ੍ਰੇਰੀਆਂ ਪਸੰਦ ਹਨ ਅਕਸਰ ਵੈੱਬਪੰਨਿਆਂ ਤੋਂ ਸਮੱਗਰੀ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, JavaScript-ਭਾਰੀ ਸਾਈਟਾਂ, ਜਿਵੇਂ ਕਿ JFrog Artifactory, ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਇਹ ਲਾਇਬ੍ਰੇਰੀਆਂ ਘੱਟ ਹੁੰਦੀਆਂ ਹਨ। ਮੁੱਖ ਕਾਰਨ ਇਹ ਹੈ ਕਿ ਵੈਬਪੇਜ ਨੂੰ ਸਮੱਗਰੀ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਲੋਡ ਕਰਨ ਲਈ JavaScript ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜੋ ਕਿ ਬੇਨਤੀਆਂ ਸੰਭਾਲ ਨਹੀਂ ਸਕਦੇ। ਇਸ ਨੂੰ ਦੂਰ ਕਰਨ ਲਈ, ਅਸੀਂ ਹੱਲ ਪੇਸ਼ ਕੀਤੇ ਜਿਵੇਂ ਕਿ , , ਅਤੇ ਬੇਨਤੀਆਂ-HTML, ਜੋ JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਲਈ ਸਹਾਇਕ ਹੈ। ਇਹ ਟੂਲ ਇੱਕ ਬ੍ਰਾਊਜ਼ਰ ਵਾਤਾਵਰਨ ਦੀ ਨਕਲ ਕਰਦੇ ਹਨ, ਪਾਈਥਨ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ JavaScript-ਨਿਰਭਰ ਵੈੱਬਪੇਜਾਂ ਤੋਂ ਸਮੱਗਰੀ ਤੱਕ ਪਹੁੰਚ ਅਤੇ ਡਾਊਨਲੋਡ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ।
ਸੇਲੇਨਿਅਮ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੀ ਪਹਿਲੀ ਪਹੁੰਚ ਵਿੱਚ ਇੱਕ ਬ੍ਰਾਊਜ਼ਰ ਉਦਾਹਰਨ ਸ਼ੁਰੂ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ ਜੋ JavaScript ਨੂੰ ਰੈਂਡਰ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਸਾਨੂੰ ਪੰਨੇ ਦੇ ਸਰੋਤ ਕੋਡ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪੰਨੇ ਦੇ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਪੰਨਾ ਸਮੱਗਰੀ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਕਮਾਂਡ ਇੱਕ ਬਰਾਊਜ਼ਰ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦੀ ਹੈ ਅਤੇ ਫਿਰ ਟਾਰਗਿਟ URL ਤੱਕ ਪਹੁੰਚ ਕਰਦੀ ਹੈ। ਵਰਤ ਕੇ , ਅਸੀਂ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ JavaScript ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਕਾਫ਼ੀ ਸਮਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਅੰਤ ਵਿੱਚ, ਐਕਸਟਰੈਕਟ ਕੀਤੇ ਪੰਨੇ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਸਾਨੂੰ ਇੱਕ ਸਥਿਰ ਰੂਪ ਵਿੱਚ ਲੋੜੀਂਦਾ ਵੈਬਪੇਜ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
ਦੂਜੀ ਪਹੁੰਚ ਵਿੱਚ, ਅਸੀਂ Pyppeteer, Puppeteer ਲਈ ਇੱਕ ਪਾਈਥਨ ਰੈਪਰ ਨੂੰ ਨਿਯੁਕਤ ਕੀਤਾ। Pyppeteer ਇੱਕ ਹੋਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਟੂਲ ਹੈ ਜੋ JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਸੇਲੇਨਿਅਮ ਵਾਂਗ, ਪਾਈਪਪੀਟੀਅਰ ਇੱਕ ਹੈੱਡਲੈੱਸ ਬ੍ਰਾਊਜ਼ਰ ਲਾਂਚ ਕਰਦਾ ਹੈ ਜੋ ਵੈਬਪੇਜ 'ਤੇ ਨੈਵੀਗੇਟ ਕਰਦਾ ਹੈ, ਜਾਵਾਸਕ੍ਰਿਪਟ ਦੇ ਚੱਲਣ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। Pyppeteer ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਇੱਕ ਮੁੱਖ ਫਾਇਦਾ ਇਹ ਹੈ ਕਿ ਇਹ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸੈਸ਼ਨ 'ਤੇ ਵਧੇਰੇ ਨਿਯੰਤਰਣ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖਾਸ ਤੱਤਾਂ ਦੇ ਲੋਡ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਨੀ . ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਸਕ੍ਰਿਪਟ ਦੁਆਰਾ ਇਸਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਲੋੜੀਂਦੀ ਪੰਨੇ ਦੀ ਸਮਗਰੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਰੈਂਡਰ ਕੀਤੀ ਗਈ ਹੈ।
ਤੀਜਾ ਹੱਲ ਬੇਨਤੀਆਂ-HTML ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਲਾਭ ਉਠਾਉਂਦਾ ਹੈ, ਜੋ ਸੇਲੇਨਿਅਮ ਜਾਂ ਪਾਈਪੀਟੀਅਰ ਵਰਗੇ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ JavaScript ਰੈਂਡਰ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ। Requests-HTML ਦੇ ਨਾਲ, ਅਸੀਂ ਵਰਤ ਕੇ ਇੱਕ HTTP ਸੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹਾਂ ਵੈਬਪੇਜ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਫਿਰ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਨੂੰ ਨਾਲ ਚਲਾਓ ਢੰਗ. ਇਹ ਹੱਲ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਸਿਮੂਲੇਸ਼ਨ ਪਹੁੰਚਾਂ ਦੇ ਮੁਕਾਬਲੇ ਹਲਕਾ ਹੈ ਅਤੇ ਅਕਸਰ ਉਦੋਂ ਵਧੇਰੇ ਢੁਕਵਾਂ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਓਵਰਹੈੱਡ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ ਹੈ। ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਸਧਾਰਨ JavaScript ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਉਪਯੋਗੀ ਹੈ, ਇਸ ਨੂੰ ਖਾਸ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਇੱਕ ਅਨੁਕੂਲ ਵਿਕਲਪ ਬਣਾਉਂਦਾ ਹੈ।
ਪਾਈਥਨ ਵਿੱਚ JavaScript-ਸਮਰੱਥ ਪੰਨਿਆਂ ਨਾਲ URL ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨਾ
ਇਹ ਹੱਲ JavaScript-ਭਾਰੀ ਪੰਨਿਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸੇਲੇਨਿਅਮ, ਇੱਕ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਸੇਲੇਨਿਅਮ ਤੁਹਾਨੂੰ ਇੱਕ ਵੈਬ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਤੁਹਾਨੂੰ JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੀ ਨਕਲ ਕਰਨ ਅਤੇ ਗਤੀਸ਼ੀਲ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।
from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.chrome.service import Servicefrom webdriver_manager.chrome import ChromeDriverManagerimport timedef download_using_selenium(url, username, apikey):# Setup Selenium WebDriveroptions = 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 exampleauth_url = f'{url}?username={username}&password={apikey}'driver.get(auth_url)# Extract contentpage_content = driver.page_source# Save to filewith open("download_selenium.html", "w") as file:file.write(page_content)driver.quit()print("Download complete using Selenium.")
JavaScript-ਸਮਰੱਥ ਪੰਨਿਆਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਪਾਈਪਪੀਟੀਅਰ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਇਹ ਹੱਲ Pyppeteer, Puppeteer ਦਾ ਇੱਕ ਪਾਈਥਨ ਪੋਰਟ (ਸਿਰਲੇਖ ਰਹਿਤ ਬ੍ਰਾਊਜ਼ਰ) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜੋ JavaScript ਨੂੰ ਚਲਾ ਸਕਦਾ ਹੈ ਅਤੇ ਪੰਨੇ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ।
import asynciofrom pyppeteer import launchasync def download_using_pyppeteer(url, username, apikey):# Launch headless browserbrowser = await launch(headless=True)page = await browser.newPage()# Basic auth and URL loadingauth_url = f'{url}?username={username}&password={apikey}'await page.goto(auth_url)# Wait for the JavaScript to loadawait page.waitForSelector('body')# Extract page contentcontent = await page.content()# Save to filewith open("download_pyppeteer.html", "w") as file:file.write(content)await browser.close()print("Download complete using Pyppeteer.")# Run the async functionasyncio.get_event_loop().run_until_complete(download_using_pyppeteer("https://example.com", "user", "key"))
JavaScript ਰੈਂਡਰਿੰਗ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਬੇਨਤੀਆਂ-HTML ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਇਹ ਪਹੁੰਚ ਬੇਨਤੀਆਂ-HTML ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਲਾਭ ਲੈਂਦੀ ਹੈ, ਜੋ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ ਆਸਾਨ JavaScript ਰੈਂਡਰਿੰਗ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
from requests_html import HTMLSessiondef download_using_requests_html(url, username, apikey):session = HTMLSession()# Make the requestauth_url = f'{url}?username={username}&password={apikey}'response = session.get(auth_url)# Render the JavaScriptresponse.html.render()# Save the page contentwith 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")
ਜਾਵਾ ਸਕ੍ਰਿਪਟ-ਸਮਰਥਿਤ ਪੰਨਿਆਂ ਲਈ ਪਾਈਥਨ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਨੂੰ ਵਧਾਉਣਾ
JavaScript-ਭਾਰੀ ਵੈਬਪੇਜਾਂ ਨੂੰ ਸਕ੍ਰੈਪ ਕਰਦੇ ਸਮੇਂ, ਇੱਕ ਆਮ ਚੁਣੌਤੀ ਪ੍ਰਮਾਣਿਕਤਾ ਜਾਂ API ਕੁੰਜੀ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਾਈਪਾਸ ਕਰਨਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ JFrog ਆਰਟੀਫੈਕਟਰੀ ਵਰਗੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ. ਜਦੋਂ ਕਿ ਅਸੀਂ ਪਹਿਲਾਂ ਸੇਲੇਨਿਅਮ ਅਤੇ ਪਾਈਪੀਟੀਅਰ ਵਰਗੇ ਟੂਲਸ ਨਾਲ ਬ੍ਰਾਊਜ਼ਰ ਆਟੋਮੇਸ਼ਨ ਦੀ ਪੜਚੋਲ ਕੀਤੀ ਸੀ, ਉੱਥੇ ਹੋਰ ਹੱਲ ਵੀ ਹਨ ਜੋ HTTP ਜਵਾਬਾਂ ਨੂੰ ਸੰਭਾਲਣ 'ਤੇ ਜ਼ਿਆਦਾ ਧਿਆਨ ਦਿੰਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਏਪੀਆਈ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨਾ ਅਤੇ ਸਿਰਲੇਖਾਂ ਦਾ ਲਾਭ ਲੈਣਾ ਪ੍ਰਮਾਣਿਕਤਾ ਪ੍ਰੋਂਪਟਾਂ ਨੂੰ ਬਾਈਪਾਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ ਜਾਂ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਸਿਮੂਲੇਸ਼ਨ ਦੇ ਓਵਰਹੈੱਡ ਤੋਂ ਬਿਨਾਂ ਵਧੇਰੇ ਖਾਸ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ।
ਇੱਕ ਹੋਰ ਮੁੱਖ ਪਹਿਲੂ ਇਹ ਹੈ ਕਿ ਇਹ ਲਾਇਬ੍ਰੇਰੀਆਂ ਗੁੰਝਲਦਾਰ ਫਾਰਮਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਲੌਗਇਨ ਜਾਂ API ਟੋਕਨ ਇਨਪੁਟ ਲਈ ਲੋੜੀਂਦੇ। ਇੱਕ ਆਮ ਹੱਲ ਵਿੱਚ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫਾਰਮ ਸਬਮਿਸ਼ਨਾਂ ਦੀ ਨਕਲ ਕਰਨਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ . ਇਹ JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ, ਸਰੋਤਾਂ ਦੀ ਬਚਤ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ ਸਰਵਰ-ਸਾਈਡ ਪ੍ਰਮਾਣਿਕਤਾ ਨਾਲ ਸਹਿਜ ਪਰਸਪਰ ਪ੍ਰਭਾਵ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਵਧੇਰੇ ਸੁਰੱਖਿਅਤ ਪੰਨਿਆਂ ਲਈ, ਤੁਹਾਡੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਸੈਸ਼ਨ ਪ੍ਰਬੰਧਨ ਅਤੇ ਟੋਕਨ-ਅਧਾਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਜੋੜਨਾ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਵਾਧਾ ਕਰ ਸਕਦਾ ਹੈ।
ਕੈਪਟਚਾ ਚੁਣੌਤੀਆਂ ਵਰਗੇ ਸੰਭਾਵੀ ਮੁੱਦਿਆਂ 'ਤੇ ਚਰਚਾ ਕਰਨਾ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਜੋ ਕੰਮਾਂ ਨੂੰ ਸਕ੍ਰੈਪ ਕਰਨ ਜਾਂ ਸਵੈਚਲਿਤ ਕਰਨ ਵੇਲੇ ਇੱਕ ਰੁਕਾਵਟ ਹੋ ਸਕਦੀ ਹੈ। ਕੈਪਟਚਾ ਨਾਲ ਨਜਿੱਠਣ ਲਈ, ਕੁਝ ਡਿਵੈਲਪਰ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਸੇਵਾਵਾਂ ਦੀ ਚੋਣ ਕਰਦੇ ਹਨ ਜੋ ਕੈਪਟਚਾ ਨੂੰ ਆਪਣੇ ਆਪ ਹੱਲ ਕਰਦੇ ਹਨ। ਦੂਸਰੇ ਮਸ਼ੀਨ ਸਿਖਲਾਈ ਐਲਗੋਰਿਦਮ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਦੇ ਹਨ, ਹਾਲਾਂਕਿ ਇਹ ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ ਹੋ ਸਕਦਾ ਹੈ। ਇਹਨਾਂ ਵਾਧੂ ਸੁਰੱਖਿਆ ਉਪਾਵਾਂ ਨੂੰ ਸਮਝਣਾ ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਚੁਣੌਤੀਆਂ ਦੀ ਇੱਕ ਵਿਸ਼ਾਲ ਸ਼੍ਰੇਣੀ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਤਿਆਰ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਤੁਹਾਡੀ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ JavaScript-ਅਧਾਰਿਤ ਪਲੇਟਫਾਰਮਾਂ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦੇ ਸਮੇਂ ਕੁਸ਼ਲਤਾ ਨਾਲ ਚੱਲਦੀ ਹੈ।
- ਮੈਂ ਪਾਈਥਨ ਨਾਲ JavaScript-ਰੈਂਡਰ ਕੀਤੀ ਸਮੱਗਰੀ ਨੂੰ ਕਿਵੇਂ ਸਕ੍ਰੈਪ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਵਰਗੇ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ , , ਜਾਂ ਵੈੱਬਪੇਜਾਂ ਤੋਂ ਸਮੱਗਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਵੇਲੇ JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਸੰਭਾਲਣ ਲਈ।
- JavaScript-ਭਾਰੀ ਵੈੱਬਸਾਈਟਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਟੂਲ ਕੀ ਹੈ?
- ਗੁੰਝਲਦਾਰ JavaScript-ਭਾਰੀ ਸਾਈਟਾਂ ਲਈ ਅਕਸਰ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਕਲਪ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਅਸਲ ਬ੍ਰਾਊਜ਼ਰ ਇੰਟਰੈਕਸ਼ਨਾਂ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ। ਵੀ ਬਹੁਤ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ.
- ਮੈਂ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਾਂ?
- ਤੁਸੀਂ ਵਰਤ ਸਕਦੇ ਹੋ HTTP ਸਿਰਲੇਖਾਂ ਵਿੱਚ API ਕੁੰਜੀਆਂ ਅਤੇ ਟੋਕਨ ਭੇਜ ਕੇ ਬੁਨਿਆਦੀ ਅਤੇ ਟੋਕਨ-ਅਧਾਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਲਾਇਬ੍ਰੇਰੀ।
- ਕੀ ਮੈਂ ਸਕ੍ਰੈਪਿੰਗ ਕਰਦੇ ਸਮੇਂ ਕੈਪਟਚਾ ਨੂੰ ਬਾਈਪਾਸ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਹਾਂ, ਕੈਪਟਚਾ-ਹੱਲ ਕਰਨ ਵਾਲੀਆਂ ਸੇਵਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਾਂ ਮਸ਼ੀਨ ਸਿਖਲਾਈ ਐਲਗੋਰਿਦਮ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਕੇ। ਹਾਲਾਂਕਿ, ਇਹ ਜਟਿਲਤਾ ਨੂੰ ਜੋੜਦਾ ਹੈ ਅਤੇ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਸਾਰੇ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਵਿਹਾਰਕ ਨਾ ਹੋਵੇ।
- ਕੀ ਸਧਾਰਨ ਸਕ੍ਰੈਪਿੰਗ ਕਾਰਜਾਂ ਲਈ ਬ੍ਰਾਊਜ਼ਰ ਆਟੋਮੇਸ਼ਨ ਤੋਂ ਬਚਣਾ ਸੰਭਵ ਹੈ?
- ਹਾਂ, ਸਧਾਰਨ ਕੰਮਾਂ ਲਈ, ਲਾਇਬ੍ਰੇਰੀ ਜਾਂ ਪੂਰੇ ਬ੍ਰਾਊਜ਼ਰ ਆਟੋਮੇਸ਼ਨ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਨੂੰ ਸੰਭਾਲ ਸਕਦਾ ਹੈ।
JavaScript-ਭਾਰੀ ਵੈਬਪੇਜਾਂ ਤੋਂ ਸਮੱਗਰੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਸਿਰਫ਼ ਬੁਨਿਆਦੀ HTTP ਬੇਨਤੀਆਂ ਤੋਂ ਵੱਧ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਸੇਲੇਨਿਅਮ ਅਤੇ ਪਾਈਪੀਟੀਅਰ ਵਰਗੇ ਟੂਲਸ ਦਾ ਲਾਭ ਉਠਾ ਕੇ, ਅਸੀਂ ਬ੍ਰਾਊਜ਼ਰ ਵਾਤਾਵਰਨ ਦੀ ਨਕਲ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ JavaScript ਨੂੰ ਚਲਾਉਂਦੇ ਹਨ ਅਤੇ ਵੈਬਪੇਜ ਦੀ ਪੂਰੀ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ। ਇਹ ਸਾਧਨ ਆਟੋਮੇਸ਼ਨ ਕਾਰਜਾਂ ਲਈ ਲਚਕਤਾ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦੇ ਹਨ।
ਹਾਲਾਂਕਿ ਬ੍ਰਾਊਜ਼ਰ ਆਟੋਮੇਸ਼ਨ ਵਧੇਰੇ ਸਰੋਤ-ਗੰਭੀਰ ਹੈ, ਇਹ ਗੁੰਝਲਦਾਰ ਪੰਨਿਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਭਰੋਸੇਯੋਗ ਹੱਲ ਹੈ। ਸਧਾਰਨ ਮਾਮਲਿਆਂ ਲਈ, ਬੇਨਤੀਆਂ-HTML ਇੱਕ ਹਲਕਾ ਵਿਕਲਪ ਹੋ ਸਕਦਾ ਹੈ। ਸਹੀ ਟੂਲ ਦੀ ਚੋਣ ਸਾਈਟ ਦੀ ਗੁੰਝਲਤਾ ਅਤੇ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੀਆਂ ਖਾਸ ਜ਼ਰੂਰਤਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ।
- ਜਾਵਾ ਸਕ੍ਰਿਪਟ-ਭਾਰੀ ਪੰਨਿਆਂ ਦੇ ਨਾਲ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਲਈ ਸੇਲੇਨਿਅਮ ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਜਾਣਕਾਰੀ ਨੂੰ ਅਧਿਕਾਰਤ ਸੇਲੇਨਿਅਮ ਦਸਤਾਵੇਜ਼ਾਂ ਤੋਂ ਹਵਾਲਾ ਦਿੱਤਾ ਗਿਆ ਸੀ। ਇਸਨੂੰ ਇੱਥੇ ਐਕਸੈਸ ਕਰੋ: ਸੇਲੇਨਿਅਮ ਦਸਤਾਵੇਜ਼ੀ .
- ਡਾਇਨਾਮਿਕ JavaScript ਸਮੱਗਰੀ ਨੂੰ ਸੰਭਾਲਣ ਲਈ Pyppeteer ਨੂੰ ਲਾਗੂ ਕਰਨਾ Pyppeteer ਦੇ GitHub ਪੰਨੇ ਦੇ ਵੇਰਵਿਆਂ 'ਤੇ ਆਧਾਰਿਤ ਸੀ। ਤੁਸੀਂ ਇੱਥੇ ਹੋਰ ਲੱਭ ਸਕਦੇ ਹੋ: ਪਾਈਪੀਟੀਅਰ ਗਿੱਟਹੱਬ .
- ਬੇਨਤੀਆਂ ਅਤੇ ਬੇਨਤੀਆਂ-HTML ਲਾਇਬ੍ਰੇਰੀਆਂ ਲਈ, ਬੇਨਤੀਆਂ-HTML ਦਸਤਾਵੇਜ਼ਾਂ ਤੋਂ ਸਮਝ ਲਈ ਗਈ ਸੀ, ਜੋ ਪਾਈਥਨ ਵਿੱਚ JavaScript ਰੈਂਡਰਿੰਗ ਨੂੰ ਸੰਭਾਲਣ ਦੀ ਡੂੰਘੀ ਸਮਝ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ: ਬੇਨਤੀਆਂ-HTML ਦਸਤਾਵੇਜ਼ .
- ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ API ਵਰਤੋਂ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਵਧੀਆ ਅਭਿਆਸਾਂ ਨੂੰ ਰੀਅਲ ਪਾਈਥਨ 'ਤੇ ਪਾਈ ਗਈ ਪਾਈਥਨ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਤਕਨੀਕਾਂ ਦੇ ਲੇਖਾਂ ਦੁਆਰਾ ਪ੍ਰੇਰਿਤ ਕੀਤਾ ਗਿਆ ਸੀ: ਅਸਲੀ ਪਾਈਥਨ .