ਈ-ਕਾਮਰਸ ਸਾਈਟਾਂ 'ਤੇ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਚੁਣੌਤੀਆਂ ਨੂੰ ਪਾਰ ਕਰਨਾ
ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਦਿਲਚਸਪ ਅਤੇ ਮੁਸ਼ਕਲ ਦੋਵੇਂ ਹੋ ਸਕਦੀ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਤੁਸੀਂ ਪ੍ਰਕਿਰਿਆ ਲਈ ਨਵੇਂ ਹੋ. ਮੈਨੂੰ ਅਜੇ ਵੀ ਇੱਕ ਗਤੀਸ਼ੀਲ ਵੈਬਸਾਈਟ ਨੂੰ ਸਕ੍ਰੈਪ ਕਰਨ ਦੀ ਮੇਰੀ ਪਹਿਲੀ ਕੋਸ਼ਿਸ਼ ਯਾਦ ਹੈ - ਇਹ ਠੰਡੇ ਸ਼ੀਸ਼ੇ ਦੁਆਰਾ ਇੱਕ ਕਿਤਾਬ ਪੜ੍ਹਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਵਾਂਗ ਮਹਿਸੂਸ ਹੋਇਆ. ਬਿਊਟੀਫੁੱਲ ਸੂਪ ਵਰਗੇ ਪਲੇਟਫਾਰਮਾਂ ਦੇ ਨਾਲ, ਸੰਭਾਵਨਾਵਾਂ ਬੇਅੰਤ ਹਨ, ਪਰ ਗੁੰਝਲਦਾਰ HTML ਢਾਂਚੇ ਨੂੰ ਨੈਵੀਗੇਟ ਕਰਨ ਵਰਗੀਆਂ ਚੁਣੌਤੀਆਂ ਤੁਹਾਡੇ ਸਬਰ ਦੀ ਪਰਖ ਕਰ ਸਕਦੀਆਂ ਹਨ। 🧑💻
ਇਸ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਈ-ਕਾਮਰਸ ਵੈਬਸਾਈਟ ਤੋਂ ਡੇਟਾ ਐਕਸਟਰੈਕਟ ਕਰਨ 'ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਹੋ, ਪਰ HTML ਤੱਤ ਅਧੂਰੇ ਜਾਪਦੇ ਹਨ। ਬਹੁਤ ਸਾਰੀਆਂ ਵੈੱਬਸਾਈਟਾਂ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਜਿਸ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹੋ, ਨੇਸਟਡ ਢਾਂਚੇ ਜਾਂ ਗਤੀਸ਼ੀਲ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਜੋ ਖਾਸ ਤੱਤਾਂ ਨੂੰ ਲੱਭਣਾ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦੇ ਹਨ। ਇਹ ਨਿਰਾਸ਼ਾਜਨਕ ਮਹਿਸੂਸ ਕਰ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਤੁਸੀਂ ਪਾਇਥਨ ਅਤੇ ਸੁੰਦਰ ਸੂਪ ਵਰਗੇ ਟੂਲਸ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰ ਰਹੇ ਹੋ।
ਪਰ ਚਿੰਤਾ ਨਾ ਕਰੋ; ਹਰ ਸਫਲ ਵੈਬ ਸਕ੍ਰੈਪਰ ਨੇ ਇੱਕ ਵਾਰ ਇਸੇ ਰੁਕਾਵਟ ਨਾਲ ਸੰਘਰਸ਼ ਕੀਤਾ। HTML ਢਾਂਚੇ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ, ਪੈਟਰਨਾਂ ਦੀ ਪਛਾਣ ਕਰਨਾ, ਅਤੇ ਆਪਣੇ ਚੋਣਕਾਰਾਂ ਨੂੰ ਸੋਧਣਾ ਸਿੱਖਣਾ ਸਕ੍ਰੈਪਿੰਗ ਦੀ ਦੁਨੀਆ ਵਿੱਚ ਬੀਤਣ ਦੀ ਇੱਕ ਰਸਮ ਹੈ। ਦ੍ਰਿੜਤਾ ਅਤੇ ਕੁਝ ਅਜ਼ਮਾਈ ਅਤੇ ਸਹੀ ਤਕਨੀਕਾਂ ਦੇ ਨਾਲ, ਤੁਸੀਂ ਜਲਦੀ ਹੀ ਸਭ ਤੋਂ ਗੁੰਝਲਦਾਰ HTML ਨੂੰ ਵੀ ਨੈਵੀਗੇਟ ਕਰਨ ਦੀ ਕਲਾ ਵਿੱਚ ਮੁਹਾਰਤ ਹਾਸਲ ਕਰੋਗੇ।
ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ HTML ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਨੈਵੀਗੇਟ ਕਰਨ ਅਤੇ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦੇ ਸਹੀ ਤੱਤਾਂ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਵਿਹਾਰਕ ਰਣਨੀਤੀਆਂ ਦੀ ਪੜਚੋਲ ਕਰਾਂਗੇ। ਟੈਗਸ ਨੂੰ ਸਮਝਣ ਤੋਂ ਲੈ ਕੇ ਡਿਵੈਲਪਰ ਟੂਲਸ ਨਾਲ ਕੰਮ ਕਰਨ ਤੱਕ, ਇਹ ਸੂਝ ਤੁਹਾਨੂੰ ਸਫਲਤਾ ਲਈ ਸੈੱਟ ਕਰਨਗੀਆਂ। ਆਓ ਅੰਦਰ ਡੁਬਕੀ ਕਰੀਏ! 🌟
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
find_all | HTML ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਇੱਕ ਖਾਸ HTML ਟੈਗ ਜਾਂ ਕਲਾਸ ਦੀਆਂ ਸਾਰੀਆਂ ਉਦਾਹਰਣਾਂ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, soup.find_all("div", class_="productContainer") ਪੰਨੇ 'ਤੇ ਸਾਰੇ ਉਤਪਾਦ ਕੰਟੇਨਰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। |
requests.get | ਦਿੱਤੇ URL ਦੀ ਕੱਚੀ HTML ਸਮੱਗਰੀ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇੱਕ HTTP GET ਬੇਨਤੀ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: ਜਵਾਬ = requests.get(url) ਪਾਰਸ ਕਰਨ ਲਈ ਪੰਨੇ HTML ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। |
BeautifulSoup | HTML ਪਾਰਸਰ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: ਸੂਪ = ਸੁੰਦਰ ਸੂਪ(response.content, "html.parser") ਅੱਗੇ ਦੀ ਪ੍ਰਕਿਰਿਆ ਲਈ HTML ਸਮੱਗਰੀ ਨੂੰ ਤਿਆਰ ਕਰਦਾ ਹੈ। |
find_element | ਪੰਨੇ 'ਤੇ ਇੱਕ ਸਿੰਗਲ ਤੱਤ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਸੇਲੇਨਿਅਮ ਨਾਲ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ: product.find_element(By.CLASS_NAME, "ਨਾਮ") ਉਤਪਾਦ ਦਾ ਨਾਮ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। |
find_elements | Find_element ਦੇ ਸਮਾਨ ਪਰ ਸਾਰੇ ਮੇਲ ਖਾਂਦੇ ਤੱਤਾਂ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: drive.find_elements(By.CLASS_NAME, "productContainer") ਦੁਹਰਾਓ ਲਈ ਸਾਰੇ ਉਤਪਾਦ ਕੰਟੇਨਰ ਲਿਆਉਂਦਾ ਹੈ। |
By.CLASS_NAME | ਐਲੀਮੈਂਟਸ ਨੂੰ ਉਹਨਾਂ ਦੇ ਕਲਾਸ ਨਾਮ ਦੁਆਰਾ ਪਛਾਣਨ ਲਈ ਇੱਕ ਸੇਲੇਨਿਅਮ ਲੋਕੇਟਰ ਰਣਨੀਤੀ। ਉਦਾਹਰਨ: CLASS_NAME ਦੁਆਰਾ, "ਕੀਮਤ" ਨਿਸ਼ਚਿਤ ਕਲਾਸ ਦੇ ਨਾਲ ਤੱਤਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦੀ ਹੈ। |
assertGreater | ਇੱਕ ਮੁੱਲ ਦੂਜੇ ਨਾਲੋਂ ਵੱਡਾ ਹੈ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ: self.assertGreater(len(product_boxes), 0) ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਕ੍ਰੈਪਿੰਗ ਦੌਰਾਨ ਉਤਪਾਦ ਮਿਲੇ। |
ChromeDriverManager | ਸੇਲੇਨਿਅਮ ਲਈ Chrome WebDriver ਦੇ ਡਾਉਨਲੋਡ ਅਤੇ ਸੈੱਟਅੱਪ ਦਾ ਆਟੋਮੈਟਿਕ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: ਡਰਾਈਵਰ = webdriver.Chrome(service=Service(ChromeDriverManager().install()))। |
text | ਇੱਕ HTML ਤੱਤ ਦੀ ਟੈਕਸਟ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ: title = product.find("div", class_="name").text ਕਿਸੇ ਉਤਪਾਦ ਦੇ ਨਾਮ ਲਈ ਦਿਖਣਯੋਗ ਟੈਕਸਟ ਨੂੰ ਕੱਢਦਾ ਹੈ। |
unittest.TestCase | ਪਾਇਥਨ ਦੇ ਯੂਨਿਟਟੈਸਟ ਮੋਡੀਊਲ ਦੀ ਇੱਕ ਕਲਾਸ ਟੈਸਟ ਕੇਸਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਉਦਾਹਰਨ: ਕਲਾਸ TestWebScraper(unittest.TestCase) ਸਕ੍ਰੈਪਰ ਲਈ ਟੈਸਟਾਂ ਦਾ ਇੱਕ ਸੂਟ ਬਣਾਉਂਦਾ ਹੈ। |
ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਹੱਲਾਂ ਨੂੰ ਤੋੜਨਾ
ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ ਲੀਵਰੇਜ ਕਰਦੀ ਹੈ ਸੁੰਦਰ ਸੂਪ, HTML ਪਾਰਸਿੰਗ ਲਈ ਇੱਕ ਪ੍ਰਸਿੱਧ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀ, ਪ੍ਰਦਾਨ ਕੀਤੀ ਈ-ਕਾਮਰਸ ਸਾਈਟ ਤੋਂ ਡੇਟਾ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ। ਇਹ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੱਚੇ HTML ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਕੇ ਕੰਮ ਕਰਦਾ ਹੈ ਬੇਨਤੀਆਂ ਲਾਇਬ੍ਰੇਰੀ ਅਤੇ ਫਿਰ ਇਸ ਨੂੰ ਸੁੰਦਰ ਸੂਪ ਦੇ ਨਾਲ ਪਾਰਸ ਕਰੋ html.parser. ਇੱਕ ਵਾਰ ਜਦੋਂ HTML ਪਾਰਸ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸਕ੍ਰਿਪਟ ਟੈਗਸ ਅਤੇ ਕਲਾਸ ਨਾਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖਾਸ ਤੱਤਾਂ ਦੀ ਪਛਾਣ ਕਰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਉਤਪਾਦ ਕੰਟੇਨਰ, ਜਿਸਨੂੰ ਉਤਪਾਦ ਦੇ ਵੇਰਵਿਆਂ ਨੂੰ ਸਮੇਟਣਾ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਪਹੁੰਚ ਸਥਿਰ HTML ਲਈ ਕੁਸ਼ਲ ਹੈ ਪਰ ਜੇ ਵੈੱਬਸਾਈਟ JavaScript ਦੁਆਰਾ ਰੈਂਡਰ ਕੀਤੀ ਗਤੀਸ਼ੀਲ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ ਤਾਂ ਸੰਘਰਸ਼ ਕਰ ਸਕਦੀ ਹੈ। ਮੈਨੂੰ ਇੱਕ ਗਤੀਸ਼ੀਲ ਵਿਅੰਜਨ ਵੈਬਸਾਈਟ 'ਤੇ ਸਮਾਨ ਮੁੱਦਿਆਂ ਨਾਲ ਸੰਘਰਸ਼ ਕਰਨਾ ਯਾਦ ਹੈ—ਸਭ ਕੁਝ ਸਹੀ ਜਾਪਦਾ ਸੀ, ਫਿਰ ਵੀ ਕੋਈ ਡਾਟਾ ਦਿਖਾਈ ਨਹੀਂ ਦਿੱਤਾ! 🧑💻
ਦੂਜੀ ਸਕਰਿਪਟ ਵਿੱਚ ਸ. ਸੇਲੇਨਿਅਮ ਖੇਡ ਵਿੱਚ ਆਉਂਦਾ ਹੈ. ਇਹ ਸਾਧਨ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ JavaScript ਦੁਆਰਾ ਲੋਡ ਕੀਤੀ ਸਮੱਗਰੀ ਵਾਲੀਆਂ ਸਾਈਟਾਂ ਲਈ ਲਾਭਦਾਇਕ ਹੈ। ਇੱਕ ਅਸਲੀ ਬ੍ਰਾਊਜ਼ਰ ਸੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਕੇ, ਸੇਲੇਨਿਅਮ ਸਾਈਟ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਨ ਵਾਲੇ ਉਪਭੋਗਤਾ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ. ਇਹ ਇਸਨੂੰ ਸਾਰੇ ਤੱਤਾਂ ਦੇ ਲੋਡ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਨ ਅਤੇ ਫਿਰ ਲੋੜੀਂਦੇ ਡੇਟਾ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਇਹ ਵਰਗ-ਅਧਾਰਿਤ ਲੋਕੇਟਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਤਪਾਦ ਦੇ ਵੇਰਵਿਆਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ CLASS_NAME ਦੁਆਰਾ. ਜਦੋਂ ਕਿ ਸੇਲੇਨਿਅਮ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਮਰੱਥਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਸਾਵਧਾਨ ਸਰੋਤ ਪ੍ਰਬੰਧਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ — ਜਿਵੇਂ ਕਿ ਬ੍ਰਾਊਜ਼ਰ ਸੈਸ਼ਨ ਨੂੰ ਛੱਡਣਾ ਯਾਦ ਰੱਖਣਾ — ਜਾਂ ਇਹ ਬਹੁਤ ਜ਼ਿਆਦਾ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਮੈਂ ਦੇਰ ਰਾਤ ਦੇ ਡੀਬੱਗਿੰਗ ਸੈਸ਼ਨ ਦੌਰਾਨ ਸਿੱਖਿਆ ਜਦੋਂ ਮੇਰਾ ਲੈਪਟਾਪ ਫ੍ਰੀਜ਼ ਹੋ ਗਿਆ ਸੀ! 🖥️
ਇਹਨਾਂ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਇੱਕ ਹੋਰ ਮੁੱਖ ਵਿਸ਼ੇਸ਼ਤਾ ਉਹਨਾਂ ਦਾ ਮਾਡਯੂਲਰ ਡਿਜ਼ਾਈਨ ਹੈ, ਜੋ ਉਹਨਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਅਨੁਕੂਲ ਬਣਾਉਣਾ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ। ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟ ਸਕ੍ਰਿਪਟ ਯੂਨਿਟ ਟੈਸਟ ਫਰੇਮਵਰਕ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਕ੍ਰੈਪਿੰਗ ਤਰਕ ਵਿੱਚ ਹਰੇਕ ਫੰਕਸ਼ਨ ਸਹੀ ਢੰਗ ਨਾਲ ਪ੍ਰਦਰਸ਼ਨ ਕਰਦਾ ਹੈ। ਇਹ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ ਕਿ ਉਤਪਾਦ ਦੇ ਕੰਟੇਨਰ ਮਿਲੇ ਹਨ ਅਤੇ ਸਿਰਲੇਖ ਅਤੇ ਕੀਮਤਾਂ ਕੱਢੀਆਂ ਗਈਆਂ ਹਨ। ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਭਰੋਸੇਯੋਗਤਾ ਬਣਾਈ ਰੱਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜਦੋਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸਕ੍ਰੈਪਿੰਗ ਕਰਦੇ ਹਨ, ਕਿਉਂਕਿ ਵੈਬਸਾਈਟਾਂ ਅਕਸਰ ਆਪਣੇ ਢਾਂਚੇ ਨੂੰ ਅਪਡੇਟ ਕਰਦੀਆਂ ਹਨ. ਇੱਕ ਵਾਰ, ਇੱਕ ਬਲੌਗ ਸਾਈਟ ਨੂੰ ਸਕ੍ਰੈਪ ਕਰਦੇ ਸਮੇਂ, ਮੈਨੂੰ ਅਜਿਹੇ ਟੈਸਟਾਂ ਦੀ ਮਹੱਤਤਾ ਦਾ ਅਹਿਸਾਸ ਹੋਇਆ - ਇੱਕ ਹਫ਼ਤੇ ਨੇ ਅਗਲੇ ਕੰਮ ਨੂੰ ਤੋੜ ਦਿੱਤਾ, ਅਤੇ ਟੈਸਟਾਂ ਨੇ ਮੈਨੂੰ ਸਮੱਸਿਆ ਦੇ ਨਿਪਟਾਰੇ ਦੇ ਘੰਟੇ ਬਚਾਏ.
ਇਹ ਸਕ੍ਰਿਪਟਾਂ ਵੀ ਅਨੁਕੂਲਤਾ ਅਤੇ ਮੁੜ ਵਰਤੋਂਯੋਗਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਬਣਾਈਆਂ ਗਈਆਂ ਹਨ। HTML ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਐਲੀਮੈਂਟ ਪਾਰਸਿੰਗ ਵਰਗੇ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਅਲੱਗ ਕਰਕੇ, ਉਹ ਮਾਮੂਲੀ ਐਡਜਸਟਮੈਂਟਾਂ ਨਾਲ ਉਸੇ ਸਾਈਟ 'ਤੇ ਦੂਜੇ ਪੰਨਿਆਂ ਜਾਂ ਸ਼੍ਰੇਣੀਆਂ ਨੂੰ ਸੰਭਾਲ ਸਕਦੇ ਹਨ। ਇਹ ਮਾਡਯੂਲਰਿਟੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਸਕ੍ਰੈਪਿੰਗ ਪ੍ਰੋਜੈਕਟ ਦਾ ਵਿਸਤਾਰ ਕਰਨਾ ਪ੍ਰਬੰਧਨਯੋਗ ਰਹਿੰਦਾ ਹੈ। ਕੁੱਲ ਮਿਲਾ ਕੇ, ਸੁੰਦਰ ਸੂਪ ਅਤੇ ਸੇਲੇਨਿਅਮ ਦਾ ਸੁਮੇਲ ਤੁਹਾਨੂੰ ਸਥਿਰ ਅਤੇ ਗਤੀਸ਼ੀਲ ਸਮਗਰੀ ਸਕ੍ਰੈਪਿੰਗ ਦੋਵਾਂ ਨਾਲ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਨਜਿੱਠਣ ਲਈ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਧੀਰਜ ਅਤੇ ਅਭਿਆਸ ਦੇ ਨਾਲ, ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਇੱਕ ਨਿਰਾਸ਼ਾਜਨਕ ਕੰਮ ਤੋਂ ਡਾਟਾ ਇਕੱਤਰ ਕਰਨ ਲਈ ਇੱਕ ਫਲਦਾਇਕ ਸਾਧਨ ਵਿੱਚ ਬਦਲ ਜਾਂਦੀ ਹੈ. 🌟
ਸੁੰਦਰ ਸੂਪ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਈ-ਕਾਮਰਸ ਸਾਈਟਾਂ ਤੋਂ ਡੇਟਾ ਐਕਸਟਰੈਕਟ ਕਰਨਾ
HTML ਪਾਰਸਿੰਗ ਅਤੇ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਲਈ ਪਾਈਥਨ ਅਤੇ ਸੁੰਦਰ ਸੂਪ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
from bs4 import BeautifulSoup
import requests
# URL of the target page
url = "https://www.noon.com/uae-en/sports-and-outdoors/exercise-and-fitness/yoga-16328/"
# Make a GET request to fetch the raw HTML content
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
# Find all product boxes
product_boxes = soup.find_all("div", class_="productContainer")
for product in product_boxes:
# Extract the title
title = product.find("div", class_="name").text if product.find("div", class_="name") else "No title"
# Extract the price
price = product.find("div", class_="price").text if product.find("div", class_="price") else "No price"
print(f"Product: {title}, Price: {price}")
ਸੇਲੇਨਿਅਮ ਨਾਲ ਗਤੀਸ਼ੀਲ ਸਮਗਰੀ ਸਕ੍ਰੈਪਿੰਗ
JavaScript-ਰੈਂਡਰ ਕੀਤੀ ਸਮੱਗਰੀ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸੇਲੇਨਿਅਮ ਦੇ ਨਾਲ ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# Set up Selenium WebDriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
url = "https://www.noon.com/uae-en/sports-and-outdoors/exercise-and-fitness/yoga-16328/"
driver.get(url)
# Wait for the products to load
products = driver.find_elements(By.CLASS_NAME, "productContainer")
for product in products:
try:
title = product.find_element(By.CLASS_NAME, "name").text
price = product.find_element(By.CLASS_NAME, "price").text
print(f"Product: {title}, Price: {price}")
except:
print("Error extracting product details")
driver.quit()
ਸੁੰਦਰ ਸੂਪ ਸਕ੍ਰੈਪਰ ਲਈ ਯੂਨਿਟ ਟੈਸਟ
ਸਕ੍ਰੈਪਿੰਗ ਤਰਕ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਪਾਈਥਨ ਦੇ ਯੂਨਿਟਸਟ ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
import unittest
from bs4 import BeautifulSoup
import requests
class TestWebScraper(unittest.TestCase):
def setUp(self):
url = "https://www.noon.com/uae-en/sports-and-outdoors/exercise-and-fitness/yoga-16328/"
response = requests.get(url)
self.soup = BeautifulSoup(response.content, "html.parser")
def test_product_extraction(self):
product_boxes = self.soup.find_all("div", class_="productContainer")
self.assertGreater(len(product_boxes), 0, "No products found")
def test_title_extraction(self):
first_product = self.soup.find("div", class_="productContainer")
title = first_product.find("div", class_="name").text if first_product.find("div", class_="name") else None
self.assertIsNotNone(title, "Title not extracted")
if __name__ == "__main__":
unittest.main()
ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਵਿੱਚ ਉੱਨਤ ਤਕਨੀਕਾਂ ਦੀ ਪੜਚੋਲ ਕਰਨਾ
ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਲਈ ਗੁੰਝਲਦਾਰ ਵੈਬਸਾਈਟਾਂ ਨਾਲ ਨਜਿੱਠਣ ਵੇਲੇ, ਵਿਚਾਰ ਕਰਨ ਲਈ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਪਹਿਲੂ ਗਤੀਸ਼ੀਲ ਸਮੱਗਰੀ ਨੂੰ ਸੰਭਾਲਣਾ ਹੈ. ਬਹੁਤ ਸਾਰੀਆਂ ਆਧੁਨਿਕ ਵੈੱਬਸਾਈਟਾਂ ਸ਼ੁਰੂਆਤੀ HTML ਡਿਲੀਵਰ ਹੋਣ ਤੋਂ ਬਾਅਦ ਤੱਤ ਲੋਡ ਕਰਨ ਲਈ JavaScript 'ਤੇ ਨਿਰਭਰ ਕਰਦੀਆਂ ਹਨ। ਇਸ ਦਾ ਮਤਲਬ ਹੈ ਜਿਵੇਂ ਟੂਲ ਸੁੰਦਰ ਸੂਪ, ਜੋ ਸਿਰਫ ਸਥਿਰ HTML ਨੂੰ ਪਾਰਸ ਕਰਦਾ ਹੈ, ਸਾਰੇ ਲੋੜੀਂਦੇ ਡੇਟਾ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ। ਅਜਿਹੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਇੱਕ ਬ੍ਰਾਊਜ਼ਰ ਆਟੋਮੇਸ਼ਨ ਟੂਲ ਨੂੰ ਜੋੜਨਾ ਜਿਵੇਂ ਕਿ ਸੇਲੇਨਿਅਮ ਜ਼ਰੂਰੀ ਬਣ ਜਾਂਦਾ ਹੈ। ਸੇਲੇਨਿਅਮ ਅਸਲ ਉਪਭੋਗਤਾ ਦੀ ਤਰ੍ਹਾਂ ਵੈਬਸਾਈਟ ਨਾਲ ਗੱਲਬਾਤ ਕਰ ਸਕਦਾ ਹੈ, ਤੱਤ ਲੋਡ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ ਅਤੇ ਉਸ ਅਨੁਸਾਰ ਡੇਟਾ ਐਕਸਟਰੈਕਟ ਕਰ ਸਕਦਾ ਹੈ. ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਸਾਈਟਾਂ ਨੂੰ ਸਕ੍ਰੈਪ ਕਰਨਾ ਜੋ ਮੁੱਖ ਤੱਤ ਅਸਿੰਕਰੋਨਸ ਰੈਂਡਰ ਕਰਦੇ ਹਨ। 🌐
ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਵਿਚਾਰ ਵੈਬਸਾਈਟ ਦਾ ਢਾਂਚਾ ਅਤੇ ਇਸਦਾ ਅੰਤਰੀਵ API ਹੈ। ਕੁਝ ਵੈੱਬਸਾਈਟਾਂ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਸਮੱਗਰੀ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਇੱਕ ਸਟ੍ਰਕਚਰਡ API ਐਂਡਪੁਆਇੰਟ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਦੀਆਂ ਹਨ। ਡਿਵੈਲਪਰ ਟੂਲਸ ਦੁਆਰਾ ਨੈੱਟਵਰਕ ਗਤੀਵਿਧੀ ਦਾ ਨਿਰੀਖਣ ਕਰਕੇ, ਤੁਸੀਂ JSON ਡੇਟਾ ਨੂੰ ਲੱਭ ਸਕਦੇ ਹੋ ਜੋ HTML ਨਾਲੋਂ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਆਸਾਨ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਉਤਪਾਦ ਵੇਰਵਿਆਂ ਲਈ ਮਲਟੀਪਲ ਨੇਸਟਡ ਟੈਗਾਂ ਨੂੰ ਪਾਰਸ ਕਰਨ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਸਾਫ਼, ਢਾਂਚਾਗਤ ਡੇਟਾ ਵਾਲੇ JSON ਵਸਤੂਆਂ ਨੂੰ ਸਿੱਧੇ ਲਿਆ ਸਕਦੇ ਹੋ। ਇਹ ਵਿਧੀ ਤੇਜ਼, ਵਧੇਰੇ ਭਰੋਸੇਮੰਦ ਹੈ, ਅਤੇ ਬੇਲੋੜੀਆਂ ਸਰਵਰ ਬੇਨਤੀਆਂ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ। ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬੇਨਤੀਆਂ ਜਾਂ httpx API ਪਰਸਪਰ ਪ੍ਰਭਾਵ ਲਈ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਪਹੁੰਚ ਹੈ।
ਅੰਤ ਵਿੱਚ, ਨੈਤਿਕ ਸਕ੍ਰੈਪਿੰਗ ਅਭਿਆਸਾਂ ਅਤੇ ਵੈਬਸਾਈਟ ਦੀਆਂ ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੀ ਪਾਲਣਾ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ. robots.txt ਦਾ ਆਦਰ ਕਰਨਾ, ਥਰੋਟਲਿੰਗ ਦੁਆਰਾ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਰਵਰ ਲੋਡ ਤੋਂ ਬਚਣਾ, ਅਤੇ ਅਸਲੀ ਉਪਭੋਗਤਾ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਸਿਰਲੇਖਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬੁਨਿਆਦੀ ਵਧੀਆ ਅਭਿਆਸ ਹਨ। ਬੇਨਤੀਆਂ ਦੇ ਵਿਚਕਾਰ ਦੇਰੀ ਜੋੜਨਾ, ਜਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜਿਵੇਂ ਸਮਾਂ ਜਾਂ asyncio, ਨਿਰਵਿਘਨ ਕਾਰਵਾਈ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ. ਜਦੋਂ ਮੈਂ ਪਹਿਲੀ ਵਾਰ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ ਸ਼ੁਰੂ ਕੀਤੀ, ਮੈਂ ਇਹਨਾਂ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ, ਨਤੀਜੇ ਵਜੋਂ ਮੇਰਾ IP ਬਲੌਕ ਹੋ ਗਿਆ — ਇੱਕ ਸਬਕ ਜੋ ਮੈਂ ਨਹੀਂ ਭੁੱਲਾਂਗਾ! ਕੁਸ਼ਲ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰ ਡਾਟਾ ਇਕੱਠਾ ਕਰਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਹਮੇਸ਼ਾ ਇਹਨਾਂ ਕਾਰਕਾਂ 'ਤੇ ਵਿਚਾਰ ਕਰੋ। 🌟
ਪਾਈਥਨ ਨਾਲ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਬਾਰੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
- ਪਾਈਥਨ ਵਿੱਚ HTML ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਲਾਇਬ੍ਰੇਰੀ ਕੀ ਹੈ?
- ਸੁੰਦਰ ਸੂਪ HTML ਪਾਰਸਿੰਗ ਲਈ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ, ਇੱਕ ਸਥਿਰ ਵੈਬਪੇਜ ਵਿੱਚ ਤੱਤਾਂ ਨੂੰ ਲੱਭਣ ਲਈ ਵਰਤੋਂ ਵਿੱਚ ਆਸਾਨ ਢੰਗਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦੀ ਹੈ।
- ਮੈਂ JavaScript ਦੁਆਰਾ ਰੈਂਡਰ ਕੀਤੀ ਸਮੱਗਰੀ ਨੂੰ ਕਿਵੇਂ ਸਕ੍ਰੈਪ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਵਰਗੇ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ Selenium, ਜੋ ਉਪਭੋਗਤਾ ਇੰਟਰੈਕਸ਼ਨਾਂ ਦੀ ਨਕਲ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਤੱਤ ਦੇ ਗਤੀਸ਼ੀਲ ਲੋਡ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰ ਸਕਦਾ ਹੈ।
- ਮੈਂ ਸਕ੍ਰੈਪਿੰਗ ਲਈ ਸਹੀ HTML ਤੱਤਾਂ ਦੀ ਪਛਾਣ ਕਿਵੇਂ ਕਰਾਂ?
- ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਡਿਵੈਲਪਰ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਤੁਸੀਂ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ DOM structure ਅਤੇ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦੇ ਤੱਤਾਂ ਦੇ ਅਨੁਸਾਰੀ ਟੈਗ, ਆਈਡੀ, ਜਾਂ ਕਲਾਸ ਦੇ ਨਾਮ ਦੀ ਪਛਾਣ ਕਰੋ।
- ਕੀ HTML ਪਾਰਸ ਕੀਤੇ ਬਿਨਾਂ ਡੇਟਾ ਨੂੰ ਸਕ੍ਰੈਪ ਕਰਨਾ ਸੰਭਵ ਹੈ?
- ਹਾਂ, ਜੇਕਰ ਵੈੱਬਸਾਈਟ ਕੋਲ API ਹੈ, ਤਾਂ ਤੁਸੀਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਢਾਂਚਾਗਤ ਡੇਟਾ ਦੀ ਬੇਨਤੀ ਕਰ ਸਕਦੇ ਹੋ requests ਜਾਂ httpx.
- ਮੈਂ ਸਕ੍ਰੈਪਿੰਗ ਦੌਰਾਨ ਬਲੌਕ ਹੋਣ ਤੋਂ ਕਿਵੇਂ ਬਚ ਸਕਦਾ ਹਾਂ?
- ਵਰਗੇ ਸਿਰਲੇਖਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ "User-Agent" ਅਸਲ ਉਪਭੋਗਤਾਵਾਂ ਦੀ ਨਕਲ ਕਰਨ ਲਈ, ਬੇਨਤੀਆਂ ਵਿਚਕਾਰ ਦੇਰੀ ਜੋੜੋ, ਅਤੇ ਸਾਈਟ ਦੀ robots.txt ਫਾਈਲ ਦਾ ਆਦਰ ਕਰੋ।
ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਲਈ ਮੁੱਖ ਉਪਾਅ
ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਕੁਸ਼ਲਤਾ ਨਾਲ ਡੇਟਾ ਇਕੱਠਾ ਕਰਨ ਲਈ ਇੱਕ ਜ਼ਰੂਰੀ ਹੁਨਰ ਹੈ, ਪਰ ਇਸ ਨੂੰ ਵੈਬਸਾਈਟ ਦੇ ਢਾਂਚੇ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਤੁਹਾਡੀ ਪਹੁੰਚ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ. ਮਿਲਾ ਕੇ ਸੁੰਦਰ ਸੂਪ HTML ਪਾਰਸਿੰਗ ਅਤੇ ਗਤੀਸ਼ੀਲ ਪੰਨਿਆਂ ਲਈ ਸੇਲੇਨਿਅਮ ਵਰਗੇ ਟੂਲਸ ਲਈ, ਤੁਸੀਂ ਡੇਟਾ ਕੱਢਣ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀਆਂ ਆਮ ਰੁਕਾਵਟਾਂ ਨੂੰ ਦੂਰ ਕਰ ਸਕਦੇ ਹੋ।
ਟੀਚਾ ਸਾਈਟ ਦੀਆਂ ਬਾਰੀਕੀਆਂ ਨੂੰ ਸਮਝਣਾ, ਜਿਵੇਂ ਕਿ JavaScript ਰੈਂਡਰਿੰਗ ਜਾਂ API ਅੰਤਮ ਬਿੰਦੂ, ਸਫਲਤਾ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਬਲੌਕ ਹੋਣ ਤੋਂ ਬਚਣ ਲਈ ਹਮੇਸ਼ਾਂ ਨੈਤਿਕ ਅਭਿਆਸਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ ਜਿਵੇਂ ਕਿ ਥ੍ਰੋਟਲਿੰਗ ਬੇਨਤੀਆਂ। ਦ੍ਰਿੜਤਾ ਅਤੇ ਸਹੀ ਸਾਧਨਾਂ ਦੇ ਨਾਲ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਗੁੰਝਲਦਾਰ ਸਕ੍ਰੈਪਿੰਗ ਪ੍ਰੋਜੈਕਟ ਪ੍ਰਬੰਧਨਯੋਗ ਅਤੇ ਫਲਦਾਇਕ ਬਣ ਸਕਦੇ ਹਨ. 🚀
ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਲਈ ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ ਸੁੰਦਰ ਸੂਪ , ਇੱਕ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀ ਜੋ HTML ਅਤੇ XML ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ।
- ਤੋਂ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ ਅਤੇ ਵਧੀਆ ਅਭਿਆਸ ਸੇਲੇਨਿਅਮ ਦਸਤਾਵੇਜ਼ੀ , ਜੋ ਗਤੀਸ਼ੀਲ ਸਮੱਗਰੀ ਲਈ ਸਵੈਚਲਿਤ ਬ੍ਰਾਊਜ਼ਰ ਕਿਰਿਆਵਾਂ ਦੀ ਸੂਝ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
- ਦੁਪਹਿਰ ਦੀ ਜਾਣਕਾਰੀ ਈ-ਕਾਮਰਸ ਪਲੇਟਫਾਰਮ , ਇਸ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਟਾਸਕ ਲਈ ਨਿਸ਼ਾਨਾ ਖਾਸ ਵੈਬਸਾਈਟ.
- ਕਮਿਊਨਿਟੀ ਸਾਈਟ ਤੋਂ ਪਾਈਥਨ ਬੇਨਤੀਆਂ ਅਤੇ API ਹੈਂਡਲਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਤਕਨੀਕਾਂ ਅਸਲੀ ਪਾਈਥਨ .
- ਵਾਧੂ ਰਣਨੀਤੀਆਂ ਅਤੇ ਨੈਤਿਕ ਸਕ੍ਰੈਪਿੰਗ ਅਭਿਆਸਾਂ ਤੋਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਗਿਆ ਹੈ ਡਾਟਾ ਸਾਇੰਸ ਵੱਲ .