ਸੇਮਲਟ ਤੋਂ ਇੱਕ ਟਿutorialਟੋਰਿਯਲ: ਪਾਈਥਨ ਵਿੱਚ ਵੈਬ ਸਕ੍ਰੈਪਿੰਗ

ਮੈਂ ਹਾਲ ਹੀ ਵਿੱਚ ਕਿਨੋਪੋਇਸਕ (ਆਈਐਮਡੀਬੀ ਦਾ ਰੂਸੀ ਰੁਪਾਂਤਰ) ਵੇਖਿਆ ਹੈ ਅਤੇ ਮੈਨੂੰ ਪਤਾ ਲੱਗਿਆ ਹੈ ਕਿ ਸਾਲਾਂ ਦੌਰਾਨ ਮੈਂ 1000 ਤੋਂ ਵੱਧ ਫਿਲਮਾਂ ਨੂੰ ਦਰਜਾ ਦਿੱਤਾ ਹੈ. ਮੈਂ ਸੋਚਿਆ ਕਿ ਇਹਨਾਂ ਡੇਟਾ ਦੀ ਵਧੇਰੇ ਵਿਸਥਾਰ ਨਾਲ ਖੋਜ ਕਰਨਾ ਦਿਲਚਸਪ ਹੋਵੇਗਾ: ਕੀ ਸਮੇਂ ਦੇ ਨਾਲ ਮੇਰੀ ਫਿਲਮ ਦੇ ਸਵਾਦ ਬਦਲ ਗਏ ਹਨ? ਸਾਲ ਦੇ ਕਿਹੜੇ ਮੌਸਮ ਵਿੱਚ ਮੈਂ ਵਧੇਰੇ ਫਿਲਮਾਂ ਵੇਖਦਾ ਹਾਂ?

ਪਰ ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਅਸੀਂ ਸੁੰਦਰ ਗ੍ਰਾਫਿਕਸ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਉਸਾਰੀ ਕਰੀਏ, ਸਾਨੂੰ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. ਬਦਕਿਸਮਤੀ ਨਾਲ, ਬਹੁਤ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਦੇ ਕੋਲ ਪਬਲਿਕ ਏਪੀਆਈ ਨਹੀਂ ਹੈ, ਇਸਲਈ ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਸਲੀਵਜ਼ ਰੋਲ ਕਰਨਾ ਪਵੇਗਾ ਅਤੇ HTML ਪੰਨਿਆਂ ਨੂੰ ਪਾਰਸ ਕਰਨਾ ਪਏਗਾ.

ਇਹ ਲੇਖ ਉਨ੍ਹਾਂ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਹਮੇਸ਼ਾਂ ਵੈੱਬ ਸਕ੍ਰੈਪਿੰਗ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਸਿੱਖਣਾ ਚਾਹੁੰਦੇ ਸਨ ਪਰ ਇਸ 'ਤੇ ਉਨ੍ਹਾਂ ਦੇ ਹੱਥ ਨਹੀਂ ਪਏ ਜਾਂ ਪਤਾ ਨਹੀਂ ਕਿੱਥੇ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ.

ਕੰਮ

ਸਾਡਾ ਕੰਮ ਪਹਿਲਾਂ ਵੇਖੀਆਂ ਗਈਆਂ ਫਿਲਮਾਂ ਬਾਰੇ ਡਾਟਾ ਕੱ extਣਾ ਹੈ: ਫਿਲਮ ਦਾ ਸਿਰਲੇਖ, ਵੇਖਣ ਦੀ ਮਿਤੀ ਅਤੇ ਸਮਾਂ, ਉਪਭੋਗਤਾ ਦੀ ਦਰਜਾਬੰਦੀ.

ਅਸਲ ਵਿੱਚ, ਸਾਡਾ ਕੰਮ 2 ਪੜਾਵਾਂ ਵਿੱਚ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ:

ਪੜਾਅ 1: HTML ਪੰਨਿਆਂ ਨੂੰ ਡਾਉਨਲੋਡ ਕਰੋ ਅਤੇ ਸੇਵ ਕਰੋ

ਪੜਾਅ 2: ਅਗਲੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ aੁਕਵੇਂ ਫਾਰਮੈਟ ਵਿੱਚ html ਪਾਰਸ ਕਰੋ (csv, json, pandas dataframe ਆਦਿ)

ਸਾਜ਼

ਇੱਥੇ http- ਬੇਨਤੀਆਂ ਭੇਜਣ ਲਈ ਬਹੁਤ ਸਾਰੀਆਂ ਪਾਈਥਨ-ਲਾਇਬ੍ਰੇਰੀਆਂ ਹਨ. ਸਭ ਤੋਂ ਮਸ਼ਹੂਰ ਅਤੇ ਬਹੁਤ ਹੀ ਸੌਖਾ ਇਕ ਹੈ ਬੇਨਤੀਆਂ.

HTML ਪਾਰਸਿੰਗ ਲਈ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਚੋਣ ਕਰਨਾ ਵੀ ਜ਼ਰੂਰੀ ਹੈ.

ਬੀਟੀਫੁੱਲਸੌਪ, ਐਲਐਕਸਐਮਐਲ

Html ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਇਹ ਦੋ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹਨ ਅਤੇ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਇੱਕ ਦੀ ਚੋਣ ਕਰਨਾ ਕੇਵਲ ਇੱਕ ਵਿਅਕਤੀਗਤ ਪਸੰਦ ਹੈ. ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇਕ ਦੂਜੇ ਨਾਲ ਨੇੜਿਓਂ ਜੁੜੀਆਂ ਹੋਈਆਂ ਹਨ: ਬਿ Beautifulਟੀਫੁਲਸੌਪ ਨੇ ਐਕਸਲੇਂਸ ਲਈ ਅੰਦਰੂਨੀ ਪਾਰਸ ਵਜੋਂ lxML ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਅਰੰਭ ਕੀਤੀ, ਅਤੇ lxML ਵਿਚ, ਇਕ ਸੂਪਰਸਪਰ ਮੋਡੀ .ਲ ਜੋੜਿਆ ਗਿਆ. ਪਹੁੰਚ ਦੀ ਤੁਲਨਾ ਕਰਨ ਲਈ, ਮੈਂ ਮੈਡੀ moduleਲ lxML.html ਵਿੱਚ ਐਕਸਪਾਥ ਚੋਣਕਾਰਾਂ ਦੀ ਵਰਤੋਂ ਬਿ Beautifulਟੀਫੁਲਸੌਪ ਨਾਲ ਅਤੇ ਪਾਰਸ ਕਰਾਂਗਾ.

ਡਾ Downloadਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ

ਆਓ ਡਾਉਨਲੋਡ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੀਏ. ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ ਪੌਲ ਨੂੰ url ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੀਏ ਅਤੇ ਇਸਨੂੰ ਸਥਾਨਕ ਫਾਈਲ ਵਿੱਚ ਸੇਵ ਕਰੀਏ.

ਅਸੀਂ ਨਤੀਜੇ ਵਾਲੀ ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਦੇ ਹਾਂ ਅਤੇ ਵੇਖਦੇ ਹਾਂ ਕਿ ਇਹ ਇੰਨੀ ਸੌਖੀ ਨਹੀਂ ਹੈ: ਸਾਈਟ ਨੇ ਸਾਨੂੰ ਰੋਬੋਟ ਸਮਝਿਆ ਅਤੇ ਡੇਟਾ ਨਹੀਂ ਦਿਖਾਏਗਾ.

ਆਓ ਲੱਭੀਏ ਕਿ ਸਾਈਟ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀ ਹੈ

ਬ੍ਰਾ browserਜ਼ਰ ਨੂੰ ਸਾਈਟ ਤੋਂ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿਚ ਕੋਈ ਮੁਸ਼ਕਲ ਨਹੀਂ ਹੈ. ਆਓ ਵੇਖੀਏ ਕਿ ਇਹ ਕਿਵੇਂ ਬੇਨਤੀ ਭੇਜਦਾ ਹੈ. ਅਜਿਹਾ ਕਰਨ ਲਈ ਅਸੀਂ ਬ੍ਰਾ inਜ਼ਰ ਵਿੱਚ "ਡਿਵੈਲਪਰ ਟੂਲਜ਼" ਵਿੱਚ "ਨੈਟਵਰਕ" ਪੈਨਲ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ (ਮੈਂ ਇਸਦੇ ਲਈ ਫਾਇਰਬੱਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ), ਆਮ ਤੌਰ 'ਤੇ, ਜਿਸ ਬੇਨਤੀ ਦੀ ਸਾਨੂੰ ਲੋੜ ਹੈ ਉਹ ਸਭ ਤੋਂ ਲੰਬਾ ਹੈ.

ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਵੇਖ ਸਕਦੇ ਹਾਂ, ਬ੍ਰਾ .ਜ਼ਰ ਹੈਡਰਜ਼ ਯੂਜ਼ਰ ਏਜੰਟ, ਕੁਕੀ ਅਤੇ ਹੋਰ ਮਾਪਦੰਡਾਂ ਨੂੰ ਵੀ ਭੇਜਦਾ ਹੈ. ਪਹਿਲਾਂ, ਅਸੀਂ ਸਿਰਫ ਇਕ ਸਿਰਲੇਖ ਨੂੰ ਸਹੀ ਯੂਜ਼ਰ ਏਜੰਟ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ.

ਇਸ ਵਾਰ ਅਸੀਂ ਸਫਲ ਹਾਂ, ਅਤੇ ਹੁਣ ਸਾਨੂੰ ਲੋੜੀਂਦਾ ਡੇਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ. ਇਹ ਧਿਆਨ ਦੇਣ ਯੋਗ ਹੈ ਕਿ ਕਈ ਵਾਰ ਸਾਈਟ ਕੁਕੀ ਦੀ ਵੈਧਤਾ ਦੀ ਜਾਂਚ ਵੀ ਕਰਦੀ ਹੈ, ਜਿਸ ਸਥਿਤੀ ਵਿੱਚ ਬੇਨਤੀਆਂ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਸੈਸ਼ਨ ਮਦਦ ਕਰਨਗੇ.

ਸਾਰੀਆਂ ਕੀਮਤਾਂ ਨੂੰ ਡਾ Downloadਨਲੋਡ ਕਰੋ

ਹੁਣ ਅਸੀਂ ਦਰਾਂ ਦੇ ਨਾਲ ਇੱਕ ਪੰਨੇ ਨੂੰ ਬਚਾਉਣ ਦੇ ਯੋਗ ਹਾਂ. ਪਰ ਆਮ ਤੌਰ ਤੇ ਉਪਭੋਗਤਾ ਕੋਲ ਬਹੁਤ ਸਾਰੀਆਂ ਦਰਾਂ ਹੁੰਦੀਆਂ ਹਨ, ਅਤੇ ਸਾਰੇ ਪੰਨਿਆਂ ਤੇ ਦੁਹਰਾਉਣਾ ਜ਼ਰੂਰੀ ਹੁੰਦਾ ਹੈ. ਪੇਜ ਨੰਬਰ ਜੋ ਸਾਡੀ ਦਿਲਚਸਪੀ ਰੱਖਦਾ ਹੈ ਸਿੱਧੇ url ਵਿੱਚ ਟ੍ਰਾਂਸਫਰ ਕਰਨਾ ਅਸਾਨ ਹੈ.

ਐਚਟੀਐਮਐਲ ਤੋਂ ਡਾਟਾ ਇੱਕਠਾ ਕਰਨਾ

ਹੁਣ html ਤੋਂ ਡੇਟਾ ਇਕੱਠਾ ਕਰਨ ਲਈ ਸਿੱਧੇ ਤੌਰ ਤੇ ਆਓ. ਬ੍ਰਾ inਜ਼ਰ ਵਿਚ "ਐਲੀਮੈਂਟ ਐਲੀਮੈਂਟ" ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ HTML ਪੇਜ ਨੂੰ ਕਿਵੇਂ ਸਟਰਕਚਰ ਕੀਤਾ ਗਿਆ ਹੈ ਇਹ ਸਮਝਣ ਦਾ ਸੌਖਾ ਤਰੀਕਾ ਹੈ. ਇਸ ਕੇਸ ਵਿੱਚ, ਹਰ ਚੀਜ਼ ਕਾਫ਼ੀ ਸਧਾਰਨ ਹੈ: ਦਰਾਂ ਵਾਲਾ ਸਾਰਾ ਟੇਬਲ ਟੈਗ ਵਿੱਚ ਹੈ. ਇਹ ਨੋਡ ਚੁਣੋ:

ਬੀਐਸ 4 ਤੋਂ ਆਯਾਤ ਕਰੋ ਸੁੰਦਰਤਾਪੂਰਣ

lxML ਆਯਾਤ html ਤੋਂ

# ਸੁੰਦਰ ਸੂਪ

ਸੂਪ = ਸੋਹਣਾ ਸੂਪ (ਟੈਕਸਟ)

ਫਿਲਮ_ਲਿਸਟ = ਸੂਪ.ਫਿੰਡ ('ਡਿਵ', ('ਕਲਾਸ': 'ਪ੍ਰੋਫਾਈਲਫਿਲਮਿਸਟ'))

# ਐਲਐਕਸਐਮਐਲ

ਟਰੀ = html.fromstring (ਟੈਕਸਟ)

ਫਿਲਮ_ਲਿਸਟ_ਲੈਕਸਟਿਮਲ = ਟ੍ਰੀ.ਕੈਪਥ ('// ਡਿਵੀ [@ ਕਲਾਸ =' 'ਪ੍ਰੋਫਾਈਲਫਿਲਮਿਸਟ' ']') [0]

ਆਓ ਸਿੱਖੀਏ ਕਿ ਫਿਲਮ ਦਾ ਰੂਸੀ ਸਿਰਲੇਖ ਕਿਵੇਂ ਕੱ pullਣਾ ਹੈ ਅਤੇ ਫਿਲਮ ਦੇ ਪੰਨੇ ਦਾ ਲਿੰਕ (ਟੈਕਸਟ ਅਤੇ ਗੁਣ ਦਾ ਮੁੱਲ ਕਿਵੇਂ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ) ਵੀ.

ਜੇ ਤੁਹਾਨੂੰ ਅੰਗਰੇਜ਼ੀ ਵਿਚ ਸਿਰਲੇਖ ਕੱ toਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ ਤਾਂ ਸਿਰਫ "nameRus" ਨੂੰ "nameEng" ਵਿੱਚ ਬਦਲੋ.

ਨਤੀਜੇ

ਅਸੀਂ ਵੈਬਸਾਈਟਾਂ ਨੂੰ ਪਾਰਸ ਕਰਨਾ ਕਿਵੇਂ ਸਿੱਖਿਆ, ਲਾਇਬ੍ਰੇਰੀਆਂ ਬੇਨਤੀਆਂ, ਖੂਬਸੂਰਤ ਸੂਪ, ਅਤੇ ਐਲਐਕਸਐਮਐਲ ਨਾਲ ਜਾਣੂ ਕਰਵਾਇਆ, ਅਤੇ ਨਾਲ ਹੀ ਕਿਨੋਪੋਇਸਕ ਤੇ ਪਹਿਲਾਂ ਤੋਂ ਵੇਖੀਆਂ ਗਈਆਂ ਫਿਲਮਾਂ ਦੇ ਹੋਰ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ suitableੁਕਵਾਂ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕੀਤਾ.