Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡

เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก, เบเบฒเบ™เปเบ›เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบœเบตเบเปเบœเปˆเปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เป€เบงเบปเป‰เบฒเบงเปˆเบฒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบงเบฑเบš scraper เปƒเบ™ Python เป‚เบ”เบเปƒเบŠเป‰ Selenium, เป€เบŠเบดเปˆเบ‡เบŠเบญเบเบซเบฒเบฅเบฒเบ„เบฒเบ›เบตเป‰เบเบปเบ™. เป€เบกเบทเปˆเบญเบŠเบญเบเบซเบฒเบ›เบตเป‰, เบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ (+- 3 เบกเบทเป‰เบ—เบฝเบšเบเบฑเบšเบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบฅเบฐเบšเบธ). scraper เบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เป„เบŸเบฅเปŒ Excel เปเบฅเบฐเบชเบปเปˆเบ‡เบœเบนเป‰เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบญเบตเป€เบกเบฅเปŒเบ—เบตเปˆเบกเบตเบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบžเบปเบš. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเปƒเบซเป‰เบ™เบฑเบเบ—เปˆเบญเบ‡เบ—เปˆเบฝเบงเบŠเบญเบเบซเบฒเบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”.

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡

เบ–เป‰เบฒ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบฑเบ”เบชเบฐเบ”เบธ, เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบชเบถเบเบชเบนเบ™เป€เบชเบ, เบเบงเบ”เป€เบšเบดเปˆเบ‡ เบ™เบตเป‰ เบšเบปเบ”เบ„เบงเบฒเบก.

เป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเบซเบเบฑเบ‡?

เบ—เปˆเบฒเบ™โ€‹เบกเบตโ€‹เบญเบดเบ”โ€‹เบชเบฐโ€‹เบซเบผเบฐโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เปƒเบ™โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹เบ•เบฒเบกโ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เป‰เบญเบเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบเบฒเบ™เบ—เปˆเบญเบ‡เบ—เปˆเบฝเบงเบ—เป‰เบฒเบเบญเบฒเบ—เบดเบ” เปเบฅเบฐเบ›เบตเป‰เป„เบ›เบšเป‰เบฒเบ™เป€เบเบตเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบˆเบดเบ‡เบˆเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเบ›เบตเป‰เบ—เบตเปˆเบกเบตเบเปเบฒเป„เบฅ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบฐเบ„เบดเบšเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ (เบ‡เปˆเบฒเบเบ”เบฒเบ server, เบชเปเบฒเบฅเบฑเบš 130 rubles เบ•เปเปˆเป€เบ”เบทเบญเบ™, เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰) เปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เปเบฅเปˆเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบญเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเบกเบทเป‰. เบœเบปเบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ—เบฒเบ‡เบญเบตเป€เบกเบง. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบธเบเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฐเบ„เบดเบšเบšเบฑเบ™เบ—เบถเบเป„เบŸเบฅเปŒ Excel เบ”เป‰เบงเบเบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต Dropbox, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฒเบเบ—เบธเบเบšเปˆเบญเบ™เปเบฅเบฐเบ—เบธเบเป€เบงเบฅเบฒ.

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เบ‚เป‰เบญเบเบšเปเปˆเบžเบปเบšเบญเบฑเบ”เบ•เบฒเบžเบฒเบชเบตเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบ—เบทเปˆเบญ, เปเบ•เปˆเบ‚เป‰เบญเบเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰

เป€เบกเบทเปˆเบญเบ„เบปเป‰เบ™เบซเบฒ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบง, "เบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™" เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰; script เบŠเบญเบเบซเบฒเบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบชเบฒเบกเบกเบทเป‰เบ‚เบญเบ‡เบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบชเบฐเบ„เบดเบš, เบกเบฑเบ™เบŠเบญเบเบซเบฒเบเบฒเบ™เบชเบฐเป€เบซเบ™เบตเปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ”เบฝเบง, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ”เบฑเบ”เปเบ›เบ‡เบกเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบซเบผเบฒเบเบ—เบดเบ”เบ—เบฒเบ‡เบเบฒเบ™เบšเบดเบ™. เบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบกเบฑเบ™, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบญเบฑเบ”เบ•เบฒเบžเบฒเบชเบตเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”; เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบนเบ”เป€เบงเบฑเบšเบญเบทเปˆเบ™?

เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบฅเบตเปˆเบกเบ‚เบนเบ”เป€เบงเบฑเบšเบ—เปเบฒเบญเบดเบ”, เบ‚เป‰เบญเบเบŠเบทเปˆเบชเบฑเบ”เบšเปเปˆเบชเบปเบ™เปƒเบˆเบกเบฑเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบฒเบเป€เบฎเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบเบฒเบ™เบ„เบฒเบ”เป€เบ”เบปเบฒ, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบเบฒเบ™เป€เบ‡เบดเบ™, เปเบฅเบฐ, เบญเบฒเบ”เบˆเบฐ, เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เปƒเบชเปˆเบชเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ‚เบญเบ‡เบšเบปเบ”เป€เบฅเบทเปˆเบญเบ‡เบ•เปˆเบฒเบ‡เป†. เปเบ•เปˆเบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบกเบฑเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ•เปˆเบฒเบ‡เป†. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰, เบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เบ‚เบนเบ”เป€เบงเบฑเบšเปเบกเปˆเบ™ "เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ" เบ‚เบญเบ‡เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.

เป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบ„เบดเบ”เบงเปˆเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™เบ„เบณเป€เบงเบปเป‰เบฒเบ—เบตเปˆเบเป‰เบฒเบซเบฒเบ™เป€เบเบตเบ™เป„เบ›. เปเบ•เปˆเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒ Google เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบ‚เบนเบ”เป€เบงเบฑเบšเบ—เบตเปˆ Larry Page เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰ Java เปเบฅเบฐ Python. เบซเบธเปˆเบ™เบเบปเบ™เบ‚เบญเบ‡ Google เป„เบ”เป‰เบ„เบปเป‰เบ™เบซเบฒเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”, เบžเบฐเบเบฒเบเบฒเบกเปƒเบซเป‰เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰. เบเบฒเบ™เบ‚เบนเบ”เป€เบงเบฑเบšเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”, เปเบฅเบฐเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เปƒเบ™ Data Science, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบ—เบฑเบเบชเบฐเบเบฒเบ™เบ‚เบนเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹เบšเบฒเบ‡โ€‹เป€เบ•เบฑเบโ€‹เบ™เบดเบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹เปƒเบ™โ€‹เบชเบดเปˆเบ‡โ€‹เบกเบฐโ€‹เบซเบฑเบ”โ€‹ เบ›เบทเป‰เบก เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เบนเบ”เป€เบงเบฑเบš, เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบกเบฒเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰. เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเปเบฅเบฐเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเบšเบปเบ”เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เป‰เบฒเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบš reCaptcha. เบ™เบตเป‰เบกเบฒเป€เบ›เบฑเบ™เบ‚เปˆเบฒเบงเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบดเป€เบชเบ”เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เป€เบˆเบปเป‰เบฒเบกเบฑเบเป€เบ”เบตเบ™เบ—เบฒเบ‡เบšเปเปˆ?!

เบ•เปเปˆเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบšเปเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบžเบฒเบเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบกเบฑเบเบˆเบฐเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบเบดเบ™เบ„เปเบฒเบ•เบญเบšเปƒเบ™เบ—เบฒเบ‡เบšเบงเบ, เบžเป‰เบญเบกเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบชเบญเบ‡เบชเบฒเบกเป€เบฅเบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบœเบนเป‰เบ—เบตเปˆเบ–เบทเบเบ–เบฒเบก. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเปˆเบงเบ™โ€‹เปƒเบซเบเปˆโ€‹เป€เบซเบฑเบ™โ€‹เบ”เบตโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เป€เบ”เบตเบ™โ€‹เบ—เบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบญเบปเบฒโ€‹เปƒเบˆโ€‹เปƒเบชเปˆโ€‹เปƒเบ™โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹เบงเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฐโ€‹เบ—เปเบฒโ€‹เปƒเบซเบกเปˆโ€‹เปเบฅเบฐโ€‹เป€เบ›เบตเบ”โ€‹เบเบงเป‰เบฒเบ‡โ€‹เบ‚เบญเบšโ€‹เป€เบ‚เบ”โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ–เบฒเบกเบšเบฒเบ‡เบ„เบปเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบฑเบเบŠเบญเบเบซเบฒเบ›เบตเป‰เป€เบฎเบทเบญเบšเบดเบ™, เบ‚เป‰เบญเบเปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ„เปเบฒเบ•เบญเบšเบˆเบฐเบšเปเปˆเป€เบ›เบฑเบ™เบšเบงเบ. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, Python เป€เบ‚เบปเป‰เบฒเบกเบฒเบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบงเบฝเบเบ‡เบฒเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปเบเป‰เป„เบ‚เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ›เบตเป‰เป€เบฎเบทเบญเบšเบดเบ™เปเบกเปˆเบ™เบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเป€เบงเบ—เบตเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™. เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบ‚เป‰เบญเบเป€เบฅเบทเบญเบเบšเปเบฅเบดเบเบฒเบ™ Kayak. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡ Momondo, Skyscanner, Expedia, เปเบฅเบฐเบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ, เปเบ•เปˆเบเบปเบ™เป„เบเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบซเบธเปˆเบ™เบเบปเบ™เปƒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™ impenetrable. เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡, เปƒเบ™เป„เบฅเบเบฐเบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเป„เบŸเบˆเบฐเบฅเบฒเบˆเบญเบ™, เบ—เบฒเบ‡เบเปˆเบฒเบ‡เบ—เบฒเบ‡เบ‚เป‰เบฒเบกเปเบฅเบฐเบฅเบปเบ”เบ–เบตเบš, เบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบกเบฐเบ™เบธเบ”, เบ‚เป‰เบญเบเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒ Kayak เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเป‚เบซเบฅเบ”เบซเบ™เป‰เบฒเป€เบงเบฑเบšเบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›. เปƒเบ™เป€เบงเบฅเบฒเบชเบฑเป‰เบ™เป†, เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฑเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰ bot เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเปƒเบ™เป„เบฅเบเบฐ 4 เบซเบฒ 6 เบŠเบปเปˆเบงเป‚เบกเบ‡, เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡, เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kayak, เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบฅเบตเปˆเบกเบ‚เบปเปˆเบกเป€เบซเบฑเบ‡เบ—เปˆเบฒเบ™เบ”เป‰เบงเบเบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบžเบงเบเบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบตเบ” bot, เบซเบผเบทเบฅเปเบ–เป‰เบฒเบชเบญเบ‡เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบ™เบขเบธเบ”เป€เบŠเบปเบฒ. เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบฑเบ”เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเบญเบทเปˆเบ™เป„เบ”เป‰เบ‡เปˆเบฒเบ, เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฒเบเบ‡เบฒเบ™เบกเบฑเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ‚เบนเบ”เป€เบงเบฑเบšเปเบฅเบฐเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบšเบฒเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ•เปเปˆเบชเบนเป‰เบเบฑเบšเบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ™เบตเป‰, เบˆเบปเปˆเบ‡เป€เบฎเบฑเบ”เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เปเบฅเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ Google เปƒเบ™เบ„เปเบฒเบงเปˆเบฒ "เบกเบฒเบฅเบฐเบเบฒเบ” web scraping". . เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เป„เบงเบเบงเปˆเบฒเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ„เบดเบ” เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบ‚เบนเบ”เป€เบงเบฑเบšเป‚เบ”เบเบšเปเปˆเบชเบฐเบซเบผเบฒเบ”.

เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฒเบšเบฅเบงเบกเบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบฑเบ” scraper เป€เบงเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

  • เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.
  • เบเบณเบฅเบฑเบ‡เป€เบ›เบตเบ”เปเบ–เบš Google Chrome.
  • เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ bot, เบœเปˆเบฒเบ™เป€เบกเบทเบญเบ‡เปเบฅเบฐเบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบŠเบญเบเบซเบฒเบ•เบปเป‹เบง.
  • เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป€เบญเบปเบฒเบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”, เบˆเบฑเบ”เบฎเบฝเบ‡เบ•เบฒเบกเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เปเบฅเบฐเบ„เบฅเบดเบเปƒเบชเปˆเบ›เบธเปˆเบกเป€เบžเบทเปˆเบญเป‚เบซเบฅเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก.
  • เบŸเบฑเบ‡เบŠเบฑเบ™เบญเบทเปˆเบ™เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบซเบ™เป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบเบญเบšเบ‚เปเป‰เบกเบนเบ™.
  • เบชเบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบ•เบฒเบกเบฅเบฒเบ„เบฒเบ›เบตเป‰ (เบฅเบฒเบ„เบฒเบ–เบทเบ) เปเบฅเบฐเป‚เบ”เบเบ„เบงเบฒเบกเป„เบงเบ–เป‰เบฝเบงเบšเบดเบ™ (เป„เบงเบ—เบตเปˆเบชเบธเบ”).
  • เบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡เบญเบตเป€เบกเบงเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบ‚เบญเบ‡เบฅเบฒเบ„เบฒเบ›เบตเป‰ (เบ›เบตเป‰เบ—เบตเปˆเบ–เบทเบเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบฅเบฒเบ„เบฒเบชเบฐเป€เบฅเปˆเบ), เปเบฅเบฐเบเบญเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบฑเบ”เบฎเบฝเบ‡เป‚เบ”เบเบชเบฒเบกเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒ Excel.
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฎเบญเบšเบงเบฝเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰.

เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เบธเบเป†เป‚เบ„เบ‡เบเบฒเบ™ Selenium เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ•เบปเบงเบ‚เบฑเบšเป€เบงเบฑเบš. เบ‚เป‰เบญเบโ€‹เปƒเบŠเป‰ Chromedriver, เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Google Chrome, เปเบ•เปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™. PhantomJS เปเบฅเบฐ Firefox เบเบฑเบ‡เป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบก. เบซเบผเบฑเบ‡เบˆเบฒเบเบ”เบฒเบงเป‚เบซเบผเบ”เป„เบ”เป€เบงเบต, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบงเบฒเบ‡เบกเบฑเบ™เป„เบงเป‰เปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เปเบฅเบฐเบ™เบตเป‰เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบกเบฑเบ™. เปเบ–เบงเบ—เบณเบญเบดเบ”เบ‚เบญเบ‡เบชเบฐเบ„เบฃเบดเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เปเบ–เบš Chrome เปƒเปเปˆ.

เบˆเบปเปˆเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเป€เบ›เบตเบ”เบ‚เบญเบšเป€เบ‚เบ”เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบ”เบตเบเปˆเบฝเบงเบเบฑเบšเบ›เบตเป‰เบเบปเบ™. เบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบเบฒเบ™เบชเบฐเป€เบซเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เปƒเบซเป‰โ€‹เบœเบนเป‰โ€‹เบญเปˆเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เป€เบ›เบฑเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เปเบ•เปˆโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบ™เบตเป‰โ€‹.

เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบขเบนเปˆเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

from time import sleep, strftime
from random import randint
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import smtplib
from email.mime.multipart import MIMEMultipart

# ะ˜ัะฟะพะปัŒะทัƒะนั‚ะต ั‚ัƒั‚ ะฒะฐัˆ ะฟัƒั‚ัŒ ะบ chromedriver!
chromedriver_path = 'C:/{YOUR PATH HERE}/chromedriver_win32/chromedriver.exe'

driver = webdriver.Chrome(executable_path=chromedriver_path) # ะญั‚ะพะน ะบะพะผะฐะฝะดะพะน ะพั‚ะบั€ั‹ะฒะฐะตั‚ัั ะพะบะฝะพ Chrome
sleep(2)

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบŠเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบ—เบปเปˆเบงเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, randint เปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰ bot "เบ™เบญเบ™เบซเบฅเบฑเบš" เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบงเบดเบ™เบฒเบ—เบตเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบซเบกเปˆ. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง, เบšเปเปˆเปเบกเปˆเบ™ bot เบ”เบฝเบงเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เบตเป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปเบฅเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก Chrome เบˆเบฐเป€เบ›เบตเบ”, เป€เบŠเบดเปˆเบ‡ bot เบˆเบฐเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ•เปˆเบฒเบ‡เป†.

เปƒเบซเป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเปเบฅเบฐเป€เบ›เบตเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒ kayak.com เปƒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบฅเบทเบญเบโ€‹เป€เบญเบปเบฒโ€‹เป€เบกเบทเบญเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบšเบดเบ™, เปเบฅเบฐโ€‹เป€เบกเบทเบญเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบฎเบปเบฒโ€‹เบขเบฒเบโ€‹เป„เบ›, เบžเป‰เบญเบกโ€‹เบ—เบฑเบ‡โ€‹เบงเบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบšเบดเบ™. เป€เบกเบทเปˆเบญเป€เบฅเบทเบญเบเบงเบฑเบ™เบ—เบต, เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเป„เบฅเบเบฐเบ‚เบญเบ‡ +-3 เบกเบทเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบœเบฐเบฅเบดเบ”เป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ–เป‰เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบ•เบปเป‹เบงเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบงเบฑเบ™เบ—เบตเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบนเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ”เบฑเบ”เปเบ›เบ‡เบฅเบฐเบซเบฑเบ” bot. เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”, เบ‚เป‰เบญเบเปƒเบซเป‰เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฎเบนเป‰เบชเบถเบเบชเบฑเบšเบชเบปเบ™, เปƒเบซเป‰เบ‚เป‰เบญเบเบฎเบนเป‰.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบซเป‰เบ„เบฅเบดเบเปƒเบชเปˆเบ›เบธเปˆเบกเบ„เบปเป‰เบ™เบซเบฒเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เปเบ–เบšเบ—เบตเปˆเบขเบนเปˆ. เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบ‚เป‰เบญเบเปƒเบŠเป‰เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบปเบงเปเบ›เบ–เบทเบเบ›เบฐเบเบฒเบ” kayak, เป€เบŠเบดเปˆเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ URL, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ get เป„เบ”เป€เบงเบตเป€เบงเบฑเบš. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบปเบ”เบ›เบธเปˆเบกเบ„เบปเป‰เบ™เบซเบฒ, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบ™เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒ.

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ get เบซเบผเบฒเบเบเบงเปˆเบฒเบชเบญเบ‡เบซเบผเบทเบชเบฒเบกเป€เบ—เบทเปˆเบญเบžเบฒเบเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบต, เบ‚เป‰เบญเบเป„เบ”เป‰เบ–เบทเบเบ‚เปเปƒเบซเป‰เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เป‚เบ”เบเปƒเบŠเป‰ reCaptcha. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบˆเบปเบ™เบเปˆเบงเบฒเบฅเบฐเบšเบปเบšเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบซเบกเปˆ. เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบ—เบปเบ”เบชเบญเบšเบชเบฐเบ„เบดเบš, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ„เบปเป‰เบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบชเบฐเป€เบซเบกเบตเป„เบ›เบขเปˆเบฒเบ‡เบ„เปˆเบญเบ‡เปเบ„เป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบฅเบฐเบซเบฑเบ”, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เป„เบฅเบเบฐ, เป‚เบ”เบเปƒเบŠเป‰เป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ. เปเบฅเบฐ, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™, เบšเบธเบเบ„เบปเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡เบšเปเปˆเบซเบ™เป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฒเบ„เบฒเบ•เบปเป‹เบงเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เป„เบฅเบเบฐ 10 เบ™เบฒเบ—เบตเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ.

เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เป‰เบฒเป‚เบ”เบเปƒเบŠเป‰ XPath

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปเบฅเบฐเป‚เบซเบผเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒ. เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบ„เบฒเปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบ—เบเป‚เบ™เป‚เบฅเบเบต XPath เบซเบผเบทเบ•เบปเบงเป€เบฅเบทเบญเบ CSS. เบ‚เป‰เบญเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ•เบดเบ”เบเบฑเบš XPath เปเบฅเบฐเบšเปเปˆเบฎเบนเป‰เบชเบถเบเบงเปˆเบฒเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ CSS, เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบฑเป‰เบ™. เบเบฒเบ™เบ—เปˆเบญเบ‡เป„เบ›เบซเบฒเปœเป‰เบฒเปƒเบ”เปœเบถเปˆเบ‡เป‚เบ”เบเปƒเบŠเป‰ XPath เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ, เปเบฅเบฐเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™ เบ™เบตเป‰ เบšเบปเบ”เบ„เบงเบฒเบก, เป€เบŠเบดเปˆเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เบซเบ™เป‰เบฒ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบšเปเปˆเปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เปƒเบ™ เบ™เบตเป‰ เบ›เบทเป‰เบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบซเป‰เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”เบเปˆเบฝเบงเบเบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เป‰เบฒเป€เบงเบฑเบšเบ•เปˆเบฒเบ‡เป†เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ XPath เปเบฅเบฐ CSS. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฑเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ.

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบซเป‰เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบš bot. เปƒเบซเป‰เปƒเบŠเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เป‚เบ›เบฃเปเบเบฃเบกเป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบ›เบตเป‰เบฅเบฒเบ„เบฒเบ–เบทเบเบ—เบตเปˆเบชเบธเบ”. เปƒเบ™เบฎเบนเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบฅเบฐเบซเบฑเบ”เป€เบฅเบทเบญเบ XPath เบ–เบทเบเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเป€เบ›เบฑเบ™เบชเบตเปเบ”เบ‡. เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบฅเบดเบเบ‚เบงเบฒเปƒเบชเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบปเบ™เปƒเบˆเปเบฅเบฐเป€เบฅเบทเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบเบงเบ”เบเบฒเบˆเบฒเบเป€เบกเบ™เบนเบ—เบตเปˆเบ›เบฒเบเบปเบ”. เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบญเบตเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡เปเบฅเบฐเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเปƒเบ™เบ•เบปเบงเป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”.

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบซเบ™เป‰เบฒ

เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบ•เบปเบงเป€เบฅเบทเบญเบเบˆเบฒเบเบฅเบฐเบซเบฑเบ”, เปƒเบซเป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปเปˆเป„เบ›เบ™เบตเป‰.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบฅเบฐเบซเบฑเบ”:

//*[@id="wtKI-price_aTab"]/div[1]/div/div/div[1]/div/span/span

เป€เบžเบทเปˆเบญเบ„เบฑเบ”เบฅเบญเบเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบฅเบดเบเบ‚เบงเบฒเปƒเบชเปˆเบชเปˆเบงเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบปเบ™เปƒเบˆเปเบฅเบฐเป€เบฅเบทเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡ Copy> Copy XPath เบˆเบฒเบเป€เบกเบ™เบนเบ—เบตเปˆเบ›เบฒเบเบปเบ”.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ›เบธเปˆเบกเบ—เบตเปˆเบ–เบทเบเบ—เบตเปˆเบชเบธเบ”:

cheap_results = โ€˜//a[@data-code = "price"]โ€™

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เบชเบณเป€เบ™เบปเบฒเบ„เบณเบชเบฑเปˆเบ‡ > เบชเบณเป€เบ™เบปเบฒ XPath

เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡เป€เบšเบดเปˆเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰, เบกเบฑเบ™เบˆเบฐเบŠเบญเบเบซเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบš a เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ data-codeเป€เบ—เบปเปˆเบฒโ€‹เบ—เบฝเบกโ€‹เบเบฑเบ™โ€‹เบเบฑเบš price. เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”, เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบกเปˆเบ™เบŠเบญเบเบซเบฒ id เป€เบŠเบดเปˆเบ‡เป€เบ—เบปเปˆเบฒเบเบฑเบš wtKI-price_aTab, เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ XPath เป„เบ›เบซเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ /div[1]/div/div/div[1]/div/span/span. เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก XPath เปเบšเบšเบ™เบตเป‰เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบˆเบฐเป€เบฎเบฑเบ” trick เป„เบ”เป‰, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเป‰เบ‡เบ”เบฝเบง. เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เปƒเบ™เบ•เบญเบ™เบ™เบตเป‰ id เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเป„เบ›เบ—เบตเปˆเปœเป‰เบฒเบ–เบทเบเป‚เบซเบฅเบ”. เบฅเบณเบ”เบฑเบšเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ wtKI เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบงเบฑเบšเบ–เบทเบเป‚เบซเบฅเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เป‰เบฒเบ•เปเปˆเป„เบ›. เบชเบฐเบ™เบฑเป‰เบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบšเบฒเบ‡เป€เบงเบฅเบฒเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆ XPath. เบ„เบงเบฒเบกเบฎเบนเป‰เบ™เบตเป‰เบˆเบฐเบฎเบฑเบšเปƒเบŠเป‰เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ”เบต.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ„เบงเบ™เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบ•เบปเบงเป€เบฅเบทเบญเบ XPath เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบœเบดเบ”เบžเบฒเบ”เบเบฑเบšเบกเบฑเบ™.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบฎเบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบปเป‰เบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบซเบผเบฒเบเป€เบชเบฑเป‰เบ™, เบžเบฒเบเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ. เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เปเบ•เปˆเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบซเป‰เบญเบ‡เบฎเบฝเบ™ resultWrapper. เบเบฒเบ™เป‚เบซเบผเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™ loop เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบงเบดเป€เบ„เบฒเบฐเป„เบ”เป‰เบ‡เปˆเบฒเบ. เป€เบกเบทเปˆเบญเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ (เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ–เบทเบเบซเปเปˆ) เป‚เบ”เบเปƒเบŠเป‰เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบปเบ™เป„เบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ (XPath). เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบฅเบฐเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰ (เปƒเบŠเป‰เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. flight_containers, เปเบฅเป‰เบง - flights_list).

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เบชเบฒเบกเป€เบชเบฑเป‰เบ™เบ—เปเบฒเบญเบดเบ”เบ–เบทเบเบชเบฐเปเบ”เบ‡เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เป„เบ›โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบ!

เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบกเปˆเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ–เป‰เบฝเบงเบšเบดเบ™เบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบš, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบปเบ‡เปƒเบชเปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบเบปเบ”เบ›เบธเปˆเบก Load more results one once each page is displayed. เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบ•เบฑเบ™ try, เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ›เบธเปˆเบกเบšเปเปˆเป‚เบซเบฅเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบปเบšเบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบซเป‰เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เบŸเบฑเบ‡เบŠเบฑเบ™ start_kayak, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

# ะ—ะฐะณั€ัƒะทะบะฐ ะฑะพะปัŒัˆะตะณะพ ะบะพะปะธั‡ะตัั‚ะฒะฐ ั€ะตะทัƒะปัŒั‚ะฐั‚ะพะฒ ะดะปั ั‚ะพะณะพ, ั‡ั‚ะพะฑั‹ ะผะฐะบัะธะผะธะทะธั€ะพะฒะฐั‚ัŒ ะพะฑัŠั‘ะผ ัะพะฑะธั€ะฐะตะผั‹ั… ะดะฐะฝะฝั‹ั…
def load_more():
    try:
        more_results = '//a[@class = "moreButton"]'
        driver.find_element_by_xpath(more_results).click()
        # ะ’ั‹ะฒะพะด ัั‚ะธั… ะทะฐะผะตั‚ะพะบ ะฒ ั…ะพะดะต ั€ะฐะฑะพั‚ั‹ ะฟั€ะพะณั€ะฐะผะผั‹ ะฟะพะผะพะณะฐะตั‚ ะผะฝะต ะฑั‹ัั‚ั€ะพ ะฒั‹ััะฝะธั‚ัŒ ั‚ะพ, ั‡ะตะผ ะพะฝะฐ ะทะฐะฝัั‚ะฐ
        print('sleeping.....')
        sleep(randint(45,60))
    except:
        pass

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบงเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰ (เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰), เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบฒเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบˆเบฐเบ‚เบนเบ”เบซเบ™เป‰เบฒ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบเบฑเบšเบเปเบฒเปเบฅเป‰เบงเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ page_scrape. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเปƒเบŠเป‰เบงเบดเบ—เบตเบ‡เปˆเบฒเบเป†เป€เบžเบทเปˆเบญเปเบเบเบกเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเปƒเบŠเป‰เบ•เบปเบงเปเบ›เป€เบ›เบฑเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” section_a_list ะธ section_b_list. เบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ„เบทเบ™เบเบญเบšเบ‚เปเป‰เบกเบนเบ™ flights_df, เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปเบเบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบ•เปเปˆเบกเบฒเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

def page_scrape():
    """This function takes care of the scraping part"""
    
    xp_sections = '//*[@class="section duration"]'
    sections = driver.find_elements_by_xpath(xp_sections)
    sections_list = [value.text for value in sections]
    section_a_list = sections_list[::2] # ั‚ะฐะบ ะผั‹ ั€ะฐะทะดะตะปัะตะผ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ะดะฒัƒั… ะฟะพะปั‘ั‚ะฐั…
    section_b_list = sections_list[1::2]
    
    # ะ•ัะปะธ ะฒั‹ ะฝะฐั‚ะบะฝัƒะปะธััŒ ะฝะฐ reCaptcha, ะฒะฐะผ ะผะพะถะตั‚ ะฟะพะฝะฐะดะพะฑะธั‚ัŒัั ั‡ั‚ะพ-ั‚ะพ ะฟั€ะตะดะฟั€ะธะฝัั‚ัŒ.
    # ะž ั‚ะพะผ, ั‡ั‚ะพ ั‡ั‚ะพ-ั‚ะพ ะฟะพัˆะปะพ ะฝะต ั‚ะฐะบ, ะฒั‹ ัƒะทะฝะฐะตั‚ะต ะธัั…ะพะดั ะธะท ั‚ะพะณะพ, ั‡ั‚ะพ ะฒั‹ัˆะตะฟั€ะธะฒะตะดั‘ะฝะฝั‹ะต ัะฟะธัะบะธ ะฟัƒัั‚ั‹
    # ัั‚ะพ ะฒั‹ั€ะฐะถะตะฝะธะต if ะฟะพะทะฒะพะปัะตั‚ ะทะฐะฒะตั€ัˆะธั‚ัŒ ั€ะฐะฑะพั‚ัƒ ะฟั€ะพะณั€ะฐะผะผั‹ ะธะปะธ ัะดะตะปะฐั‚ัŒ ะตั‰ั‘ ั‡ั‚ะพ-ะฝะธะฑัƒะดัŒ
    # ั‚ัƒั‚ ะผะพะถะฝะพ ะฟั€ะธะพัั‚ะฐะฝะพะฒะธั‚ัŒ ั€ะฐะฑะพั‚ัƒ, ั‡ั‚ะพ ะฟะพะทะฒะพะปะธั‚ ะฒะฐะผ ะฟั€ะพะนั‚ะธ ะฟั€ะพะฒะตั€ะบัƒ ะธ ะฟั€ะพะดะพะปะถะธั‚ัŒ ัะบั€ะฐะฟะธะฝะณ
    # ั ะธัะฟะพะปัŒะทัƒัŽ ั‚ัƒั‚ SystemExit ั‚ะฐะบ ะบะฐะบ ั…ะพั‡ัƒ ะฟั€ะพั‚ะตัั‚ะธั€ะพะฒะฐั‚ัŒ ะฒัั‘ ั ัะฐะผะพะณะพ ะฝะฐั‡ะฐะปะฐ
    if section_a_list == []:
        raise SystemExit
    
    # ะฏ ะฑัƒะดัƒ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฑัƒะบะฒัƒ A ะดะปั ัƒั…ะพะดัั‰ะธั… ั€ะตะนัะพะฒ ะธ B ะดะปั ะฟั€ะธะฑั‹ะฒะฐัŽั‰ะธั…
    a_duration = []
    a_section_names = []
    for n in section_a_list:
        # ะŸะพะปัƒั‡ะฐะตะผ ะฒั€ะตะผั
        a_section_names.append(''.join(n.split()[2:5]))
        a_duration.append(''.join(n.split()[0:2]))
    b_duration = []
    b_section_names = []
    for n in section_b_list:
        # ะŸะพะปัƒั‡ะฐะตะผ ะฒั€ะตะผั
        b_section_names.append(''.join(n.split()[2:5]))
        b_duration.append(''.join(n.split()[0:2]))

    xp_dates = '//div[@class="section date"]'
    dates = driver.find_elements_by_xpath(xp_dates)
    dates_list = [value.text for value in dates]
    a_date_list = dates_list[::2]
    b_date_list = dates_list[1::2]
    # ะŸะพะปัƒั‡ะฐะตะผ ะดะตะฝัŒ ะฝะตะดะตะปะธ
    a_day = [value.split()[0] for value in a_date_list]
    a_weekday = [value.split()[1] for value in a_date_list]
    b_day = [value.split()[0] for value in b_date_list]
    b_weekday = [value.split()[1] for value in b_date_list]
    
    # ะŸะพะปัƒั‡ะฐะตะผ ั†ะตะฝั‹
    xp_prices = '//a[@class="booking-link"]/span[@class="price option-text"]'
    prices = driver.find_elements_by_xpath(xp_prices)
    prices_list = [price.text.replace('$','') for price in prices if price.text != '']
    prices_list = list(map(int, prices_list))

    # stops - ัั‚ะพ ะฑะพะปัŒัˆะพะน ัะฟะธัะพะบ, ะฒ ะบะพั‚ะพั€ะพะผ ะฟะตั€ะฒั‹ะน ั„ั€ะฐะณะผะตะฝั‚ ะฟัƒั‚ะธ ะฝะฐั…ะพะดะธั‚ัั ะฟะพ ั‡ั‘ั‚ะฝะพะผัƒ ะธะฝะดะตะบััƒ, ะฐ ะฒั‚ะพั€ะพะน - ะฟะพ ะฝะตั‡ั‘ั‚ะฝะพะผัƒ
    xp_stops = '//div[@class="section stops"]/div[1]'
    stops = driver.find_elements_by_xpath(xp_stops)
    stops_list = [stop.text[0].replace('n','0') for stop in stops]
    a_stop_list = stops_list[::2]
    b_stop_list = stops_list[1::2]

    xp_stops_cities = '//div[@class="section stops"]/div[2]'
    stops_cities = driver.find_elements_by_xpath(xp_stops_cities)
    stops_cities_list = [stop.text for stop in stops_cities]
    a_stop_name_list = stops_cities_list[::2]
    b_stop_name_list = stops_cities_list[1::2]
    
    # ัะฒะตะดะตะฝะธั ะพ ะบะพะผะฟะฐะฝะธะธ-ะฟะตั€ะตะฒะพะทั‡ะธะบะต, ะฒั€ะตะผั ะพั‚ะฟั€ะฐะฒะปะตะฝะธั ะธ ะฟั€ะธะฑั‹ั‚ะธั ะดะปั ะพะฑะพะธั… ั€ะตะนัะพะฒ
    xp_schedule = '//div[@class="section times"]'
    schedules = driver.find_elements_by_xpath(xp_schedule)
    hours_list = []
    carrier_list = []
    for schedule in schedules:
        hours_list.append(schedule.text.split('n')[0])
        carrier_list.append(schedule.text.split('n')[1])
    # ั€ะฐะทะดะตะปัะตะผ ัะฒะตะดะตะฝะธั ะพ ะฒั€ะตะผะตะฝะธ ะธ ะพ ะฟะตั€ะตะฒะพะทั‡ะธะบะฐั… ะผะตะถะดัƒ ั€ะตะนัะฐะผะธ a ะธ b
    a_hours = hours_list[::2]
    a_carrier = carrier_list[1::2]
    b_hours = hours_list[::2]
    b_carrier = carrier_list[1::2]

    
    cols = (['Out Day', 'Out Time', 'Out Weekday', 'Out Airline', 'Out Cities', 'Out Duration', 'Out Stops', 'Out Stop Cities',
            'Return Day', 'Return Time', 'Return Weekday', 'Return Airline', 'Return Cities', 'Return Duration', 'Return Stops', 'Return Stop Cities',
            'Price'])

    flights_df = pd.DataFrame({'Out Day': a_day,
                               'Out Weekday': a_weekday,
                               'Out Duration': a_duration,
                               'Out Cities': a_section_names,
                               'Return Day': b_day,
                               'Return Weekday': b_weekday,
                               'Return Duration': b_duration,
                               'Return Cities': b_section_names,
                               'Out Stops': a_stop_list,
                               'Out Stop Cities': a_stop_name_list,
                               'Return Stops': b_stop_list,
                               'Return Stop Cities': b_stop_name_list,
                               'Out Time': a_hours,
                               'Out Airline': a_carrier,
                               'Return Time': b_hours,
                               'Return Airline': b_carrier,                           
                               'Price': prices_list})[cols]
    
    flights_df['timestamp'] = strftime("%Y%m%d-%H%M") # ะฒั€ะตะผั ัะฑะพั€ะฐ ะดะฐะฝะฝั‹ั…
    return flights_df

เบ‚เป‰เบญเบเบžเบฐเบเบฒเบเบฒเบกเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบ•เบปเบงเปเบ›เป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰. เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบ•เบปเบงเปเบ›เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ a เป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เปเบฅเบฐ b - เบเบฑเบšเบ—เบตเบชเบญเบ‡. เบ‚เปเปƒเบซเป‰เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เปเปˆเป„เบ›.

เบเบปเบ™เป„เบเบเบฒเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™

เบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ”เบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบชเบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เบชเบฐเบซเบ™เบญเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบ‚เบนเบ”เบซเบ™เป‰เบฒเป€เบงเบฑเบšเบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เป„เบ”เป‰. โ€‹เปเบ•เปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เบ—เบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒโ€‹เบšเบฒเบ‡โ€‹เบเบปเบ™โ€‹เป„เบโ€‹เบŠเปˆเบงเบโ€‹เป€เบซเบฅเบทเบญโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบ›เบถเบเบชเบฒโ€‹เบซเบฒเบฅเบทโ€‹เบขเบนเปˆโ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบญเบตเป€เบกเบงเปเบฅเบฐเบšเบฒเบ‡เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ start_kayak, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เป€เบžเบทเปˆเบญเปƒเบซเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบกเบทเบญเบ‡เปเบฅเบฐเบงเบฑเบ™เบ—เบต. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰, เบกเบฑเบ™เบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปƒเบ™เบ•เบปเบงเปเบ› kayak, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ™เปเบฒเบ—เปˆเบฒเบ™เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบˆเบฑเบ”เบฎเบฝเบ‡เบ•เบฒเบกเบ„เปเบฒเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบšเบ„เปเบฒเบ–เบฒเบก. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ‚เบนเบ”เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฒเบ„เบฒเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒ. เบ„เบท, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเบฅเบฒเบ„เบฒเบ›เบตเป‰เบ‚เบฑเป‰เบ™เบ•เปˆเปเบฒเปเบฅเบฐเบฅเบฒเบ„เบฒเบชเบฐเป€เบฅเปˆเบ. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบ„เบฝเบ‡เบ„เบนเปˆเบเบฑเบšเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ—เบตเปˆเบญเบญเบเป‚เบ”เบเป€เบงเบฑเบšเป„เบŠเบ—เปŒ, เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบ—เบฒเบ‡เบญเบตเป€เบกเบง. เปƒเบ™เบซเบ™เป‰เบฒ, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ„เบงเบ™เบขเบนเปˆเปƒเบ™เบกเบธเบกเบŠเป‰เบฒเบเป€เบ—เบดเบ‡. เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰, เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบเปƒเบŠเป‰เบงเบฑเบ™เบ—เบตเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบšเปเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒ.

def start_kayak(city_from, city_to, date_start, date_end):
    """City codes - it's the IATA codes!
    Date format -  YYYY-MM-DD"""
    
    kayak = ('https://www.kayak.com/flights/' + city_from + '-' + city_to +
             '/' + date_start + '-flexible/' + date_end + '-flexible?sort=bestflight_a')
    driver.get(kayak)
    sleep(randint(8,10))
    
    # ะธะฝะพะณะดะฐ ะฟะพัะฒะปัะตั‚ัั ะฒัะฟะปั‹ะฒะฐัŽั‰ะตะต ะพะบะฝะพ, ะดะปั ะฟั€ะพะฒะตั€ะบะธ ะฝะฐ ัั‚ะพ ะธ ะตะณะพ ะทะฐะบั€ั‹ั‚ะธั ะผะพะถะฝะพ ะฒะพัะฟะพะปัŒะทะพะฒะฐั‚ัŒัั ะฑะปะพะบะพะผ try
    try:
        xp_popup_close = '//button[contains(@id,"dialog-close") and contains(@class,"Button-No-Standard-Style close ")]'
        driver.find_elements_by_xpath(xp_popup_close)[5].click()
    except Exception as e:
        pass
    sleep(randint(60,95))
    print('loading more.....')
    
#     load_more()
    
    print('starting first scrape.....')
    df_flights_best = page_scrape()
    df_flights_best['sort'] = 'best'
    sleep(randint(60,80))
    
    # ะ’ะพะทัŒะผั‘ะผ ัะฐะผัƒัŽ ะฝะธะทะบัƒัŽ ั†ะตะฝัƒ ะธะท ั‚ะฐะฑะปะธั†ั‹, ั€ะฐัะฟะพะปะพะถะตะฝะฝะพะน ะฒ ะฒะตั€ั…ะฝะตะน ั‡ะฐัั‚ะธ ัั‚ั€ะฐะฝะธั†ั‹
    matrix = driver.find_elements_by_xpath('//*[contains(@id,"FlexMatrixCell")]')
    matrix_prices = [price.text.replace('$','') for price in matrix]
    matrix_prices = list(map(int, matrix_prices))
    matrix_min = min(matrix_prices)
    matrix_avg = sum(matrix_prices)/len(matrix_prices)
    
    print('switching to cheapest results.....')
    cheap_results = '//a[@data-code = "price"]'
    driver.find_element_by_xpath(cheap_results).click()
    sleep(randint(60,90))
    print('loading more.....')
    
#     load_more()
    
    print('starting second scrape.....')
    df_flights_cheap = page_scrape()
    df_flights_cheap['sort'] = 'cheap'
    sleep(randint(60,80))
    
    print('switching to quickest results.....')
    quick_results = '//a[@data-code = "duration"]'
    driver.find_element_by_xpath(quick_results).click()  
    sleep(randint(60,90))
    print('loading more.....')
    
#     load_more()
    
    print('starting third scrape.....')
    df_flights_fast = page_scrape()
    df_flights_fast['sort'] = 'fast'
    sleep(randint(60,80))
    
    # ะกะพั…ั€ะฐะฝะตะฝะธะต ะฝะพะฒะพะณะพ ั„ั€ะตะนะผะฐ ะฒ Excel-ั„ะฐะนะป, ะธะผั ะบะพั‚ะพั€ะพะณะพ ะพั‚ั€ะฐะถะฐะตั‚ ะณะพั€ะพะดะฐ ะธ ะดะฐั‚ั‹
    final_df = df_flights_cheap.append(df_flights_best).append(df_flights_fast)
    final_df.to_excel('search_backups//{}_flights_{}-{}_from_{}_to_{}.xlsx'.format(strftime("%Y%m%d-%H%M"),
                                                                                   city_from, city_to, 
                                                                                   date_start, date_end), index=False)
    print('saved df.....')
    
    # ะœะพะถะฝะพ ัะปะตะดะธั‚ัŒ ะทะฐ ั‚ะตะผ, ะบะฐะบ ะฟั€ะพะณะฝะพะท, ะฒั‹ะดะฐะฒะฐะตะผั‹ะน ัะฐะนั‚ะพะผ, ัะพะพั‚ะฝะพัะธั‚ัั ั ั€ะตะฐะปัŒะฝะพัั‚ัŒัŽ
    xp_loading = '//div[contains(@id,"advice")]'
    loading = driver.find_element_by_xpath(xp_loading).text
    xp_prediction = '//span[@class="info-text"]'
    prediction = driver.find_element_by_xpath(xp_prediction).text
    print(loading+'n'+prediction)
    
    # ะธะฝะพะณะดะฐ ะฒ ะฟะตั€ะตะผะตะฝะฝะพะน loading ะพะบะฐะทั‹ะฒะฐะตั‚ัั ัั‚ะฐ ัั‚ั€ะพะบะฐ, ะบะพั‚ะพั€ะฐั, ะฟะพะทะถะต, ะฒั‹ะทั‹ะฒะฐะตั‚ ะฟั€ะพะฑะปะตะผั‹ ั ะพั‚ะฟั€ะฐะฒะบะพะน ะฟะธััŒะผะฐ
    # ะตัะปะธ ัั‚ะพ ะฟั€ะพะทะพัˆะปะพ - ะผะตะฝัะตะผ ะตั‘ ะฝะฐ "Not Sure"
    weird = 'ยฏ_(ใƒ„)_/ยฏ'
    if loading == weird:
        loading = 'Not sure'
    
    username = '[email protected]'
    password = 'YOUR PASSWORD'

    server = smtplib.SMTP('smtp.outlook.com', 587)
    server.ehlo()
    server.starttls()
    server.login(username, password)
    msg = ('Subject: Flight Scrapernn
Cheapest Flight: {}nAverage Price: {}nnRecommendation: {}nnEnd of message'.format(matrix_min, matrix_avg, (loading+'n'+prediction)))
    message = MIMEMultipart()
    message['From'] = '[email protected]'
    message['to'] = '[email protected]'
    server.sendmail('[email protected]', '[email protected]', msg)
    print('sent email.....')

เบ‚เป‰เบญเบเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบชเบฐเบ„เบฃเบดเบšเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบšเบฑเบ™เบŠเบต Outlook (hotmail.com). เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบšเบšเบฑเบ™เบŠเบต Gmail, เบฅเบฐเบšเบปเบšเบญเบตเป€เบกเบงเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบก, เปเบ•เปˆเบกเบตเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบšเบฑเบ™เบŠเบต Hotmail, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบฅเบฐเบซเบฑเบ”.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฑเบ”เบฅเบญเบเบžเบงเบเบกเบฑเบ™เปเบฅเบฐเบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบšเบžเบงเบเบกเบฑเบ™. เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบงเบดเบ—เบตเบ”เบฝเบงเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡.

เบฅเบฐเบšเบปเบšเบžเป‰เบญเบก

เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡ loop เบ‡เปˆเบฒเบเป†เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. script เบฎเป‰เบญเบ‡เบ‚เปเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบเปˆเบฝเบงเบเบฑเบšเป€เบกเบทเบญเบ‡เปเบฅเบฐเบงเบฑเบ™เบ—เบต. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ script เบ„เบปเบ‡เบ—เบตเปˆ, เบ—เปˆเบฒเบ™เบšเปเปˆเบซเบ™เป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ—เบธเบเบ„เบฑเป‰เบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบฒเบเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบชเบฒเบกเบฒเบ”เบญเบญเบเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบญเบญเบเป‚เบ”เบ uncomment เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบ script เปเบกเปˆเบ™ hardcoded.

city_from = input('From which city? ')
city_to = input('Where to? ')
date_start = input('Search around which departure date? Please use YYYY-MM-DD format only ')
date_end = input('Return when? Please use YYYY-MM-DD format only ')

# city_from = 'LIS'
# city_to = 'SIN'
# date_start = '2019-08-21'
# date_end = '2019-09-07'

for n in range(0,5):
    start_kayak(city_from, city_to, date_start, date_end)
    print('iteration {} was complete @ {}'.format(n, strftime("%Y%m%d-%H%M")))
    
    # ะ–ะดั‘ะผ 4 ั‡ะฐัะฐ
    sleep(60*60*4)
    print('sleep finished.....')

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบญเบ‡ script เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ.
Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเปˆเบ™เบ‚เบญเบ‡เบชเบฐเบ„เบฃเบดเบš

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เป„เบ”เป‰เป„เบเบ™เบตเป‰, เบ‚เปเบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเบเบดเบ™เบ”เบต! เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบ‚เบนเบ”เป€เบงเบฑเบšเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เบซเบผเบฒเบเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš Twilio เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบญเบตเป€เบกเบง. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบŠเป‰ VPN เบซเบผเบทโ€‹เบญเบฑเบ™โ€‹เบญเบทเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบžเป‰เบญเบกโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบˆเบฒเบโ€‹เบซเบผเบฒเบ servers. เบเบฑเบ‡เบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบฅเบฒเบงเป€เบ›เบฑเบ™เบ„เบปเบ™, เปเบ•เปˆเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰. เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบกเบตเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเป„เบŸเบฅเปŒ Excel เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบœเบนเป‰เปƒเบŠเป‰เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเปเบ™เบšเบเบฑเบšเบญเบตเป€เบกเบง.

Python - เบœเบนเป‰เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ›เบตเป‰เบเบปเบ™เบฅเบฒเบ„เบฒเบ–เบทเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบเบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เป€เบˆเบปเป‰เบฒเปƒเบŠเป‰เป€เบ—เบเป‚เบ™เป‚เบฅเบเบตเบเบฒเบ™เบ‚เบนเบ”เป€เบงเบฑเบšเบšเป?

  • เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง

  • เบšเปเปˆโ€‹เบกเบต

เบœเบนเป‰เปƒเบŠเป‰ 8 เบ„เบปเบ™เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 1 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™