เบเบนเปเบเบฝเบเบเบญเบเบเบปเบเบเบงเบฒเบก, เบเบฒเบเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบเบตเบเปเบเปเปเบเบกเบทเปเบเบตเป, เปเบงเบปเปเบฒเบงเปเบฒเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบกเบฑเบเปเบกเปเบเปเบเบทเปเบญเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบงเบฑเบ scraper เปเบ Python เปเบเบเปเบเป Selenium, เปเบเบดเปเบเบเบญเบเบซเบฒเบฅเบฒเบเบฒเบเบตเปเบเบปเบ. เปเบกเบทเปเบญเบเบญเบเบซเบฒเบเบตเป, เบงเบฑเบเบเบตเบเบตเปเบเปเบฝเบเปเบเบเปเบเปเบเบทเบเบเปเบฒเปเบเป (+- 3 เบกเบทเปเบเบฝเบเบเบฑเบเบงเบฑเบเบเบตเบเบตเปเบฅเบฐเบเบธ). scraper เบเบฑเบเบเบถเบเบเบปเบเบเบฒเบเบเบปเปเบเบซเบฒเปเบเปเบเบฅเป Excel เปเบฅเบฐเบชเบปเปเบเบเบนเปเบเบตเปเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเปเบเบซเบฒเบญเบตเปเบกเบฅเปเบเบตเปเบกเบตเบเบปเบเบชเบฐเบซเบผเบธเบเบเบญเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบเบปเบฒเบเบปเบ. เปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเปเบเบเบเบฒเบเบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเปเบงเบเปเบซเปเบเบฑเบเบเปเบญเบเบเปเบฝเบงเบเบญเบเบซเบฒเบเปเปเบชเบฐเปเบซเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบ.
เบเปเบฒ, เปเบเบเบฐเบเบฐเบเบตเปเปเบเบปเปเบฒเปเบเบงเบฑเบเบชเบฐเบเบธ, เปเบเบปเปเบฒเบฎเบนเปเบชเบถเบเบชเบนเบเปเบชเบ, เบเบงเบเปเบเบดเปเบ
เปเบฎเบปเบฒเบเบฐเบเบญเบเบซเบฒเบซเบเบฑเบ?
เบเปเบฒเบโเบกเบตโเบญเบดเบโเบชเบฐโเบซเบผเบฐโเปเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบฅเบฐโเบเบปเบโเบเบตเปโเบญเบฐโเบเบดโเบเบฒเบโเปเบโเบเบตเปโเบเบตเปโเบเบฒเบกโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโ. เบเบปเบงเบขเปเบฒเบ, เบเปเบญเบเปเบเปเบกเบฑเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบเบฒเบเบเปเบญเบเบเปเบฝเบงเบเปเบฒเบเบญเบฒเบเบดเบ เปเบฅเบฐเบเบตเปเปเบเบเปเบฒเบเปเบเบตเบเบเบญเบเบเปเบญเบ. เบเปเบฒเบเปเบฒเบเบเบดเบเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเบตเปเบเบตเปเบกเบตเบเปเบฒเปเบฅ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบชเบฐเบเบดเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ (เบเปเบฒเบเบเบฒเบ
เบเปเบญเบเบเปเปเบเบปเบเบญเบฑเบเบเบฒเบเบฒเบชเบตเบเบตเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบทเปเบญ, เปเบเปเบเปเบญเบเบเบดเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเปเบเปเบเป
เปเบกเบทเปเบญเบเบปเปเบเบซเบฒ, เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบง, "เบงเบฑเบเบเบตเบเบตเปเบกเบตเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบ" เบเบทเบเบเปเบฒเปเบเป; script เบเบญเบเบซเบฒเบเปเปเบชเบฐเปเบซเบเบตเบเบตเปเบขเบนเปเปเบเบชเบฒเบกเบกเบทเปเบเบญเบเบงเบฑเบเบเบตเบเบตเปเบเปเบฒเบเบปเบเปเบงเป. เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเปเบเบชเบฐเบเบดเบ, เบกเบฑเบเบเบญเบเบซเบฒเบเบฒเบเบชเบฐเปเบซเบเบตเปเบเบเบดเบเบเบฒเบเบเบฝเบง, เบกเบฑเบเบเปเบฒเบเบเบตเปเบเบฐเบเบฑเบเปเบเบเบกเบฑเบเปเบเบทเปเบญเปเบซเปเบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบเปเบเบซเบผเบฒเบเบเบดเบเบเบฒเบเบเบฒเบเบเบดเบ. เบเปเบงเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเบกเบฑเบ, เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบญเบฑเบเบเบฒเบเบฒเบชเบตเบเบตเปเบเบดเบเบเบฒเบ; เบเบฒเบเบเบปเปเบเบเบปเบเบเบฑเปเบเบเปเบฒเบงเบชเบฒเบกเบฒเบเปเบเบฑเบเบชเบดเปเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบ.
เปเบเบฑเบเบซเบเบฑเบเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเบเบนเบเปเบงเบฑเบเบญเบทเปเบ?
เปเบกเบทเปเบญเบเปเบญเบเปเบฅเบตเปเบกเบเบนเบเปเบงเบฑเบเบเปเบฒเบญเบดเบ, เบเปเบญเบเบเบทเปเบชเบฑเบเบเปเปเบชเบปเบเปเบเบกเบฑเบเปเบเบเบชเบฐเปเบเบฒเบฐ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเบญเบเบเบฒเบเบขเบฒเบเปเบฎเบฑเบเปเบเบเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบญเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฒเบเบเบฒเบเปเบเบปเบฒ, เบเบฒเบเบงเบดเปเบเบฒเบฐเบเบฒเบเบเปเบฒเบเบเบฒเบเปเบเบดเบ, เปเบฅเบฐ, เบญเบฒเบเบเบฐ, เปเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบญเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบฒเบเปเบชเปเบชเบตเบเบงเบฒเบกเบฎเบนเปเบชเบถเบเบเบญเบเบเบปเบเปเบฅเบทเปเบญเบเบเปเบฒเบเป. เปเบเปเบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเบงเปเบฒเบกเบฑเบเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบเบตเปเบเบฐเบเบดเบเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบเปเบเบเบเบฒเบเบเบตเปเปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบเบเบฒเบเปเบงเบฑเบเปเบเบเปเบเปเบฒเบเป. เปเบเบเบฐเบเบฐเบเบตเปเบเปเบญเบเปเบเปเปเบเบปเปเบฒเปเบเปเบเบซเบปเบงเบเปเปเบเบตเป, เบเปเบญเบเบฎเบนเปเบงเปเบฒเบเบฒเบเบเบนเบเปเบงเบฑเบเปเบกเปเบ "เปเบเบทเปเบญเบเบเบฑเบ" เบเบญเบเบญเบดเบเปเบเบตเปเบเบฑเบ.
เปเบเบปเปเบฒเบญเบฒเบเบเบดเบเบงเปเบฒเบเบตเปเปเบเบฑเบเบเบณเปเบงเบปเปเบฒเบเบตเปเบเปเบฒเบซเบฒเบเปเบเบตเบเปเบ. เปเบเปเบเบดเบเบฒเบฅเบฐเบเบฒเบงเปเบฒ Google เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเปเบเบทเปเบญเบเบเบนเบเปเบงเบฑเบเบเบตเป Larry Page เบชเปเบฒเบเปเบเบเปเบเป Java เปเบฅเบฐ Python. เบซเบธเปเบเบเบปเบเบเบญเบ Google เปเบเปเบเบปเปเบเบซเบฒเบญเบดเบเปเบเบตเปเบเบฑเบ, เบเบฐเบเบฒเบเบฒเบกเปเบซเปเบเปเบฒเบเบญเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบเบฒเบกเบเบญเบเบเบงเบเปเบเบปเบฒเปเบซเปเบเบฑเบเบเบนเปเปเบเป. เบเบฒเบเบเบนเบเปเบงเบฑเบเบกเบตเบเบฒเบเบเปเบฒเปเบเปเบเบตเปเบเปเปเบกเบตเบเบตเปเบชเบดเปเบเบชเบธเบ, เปเบฅเบฐเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบชเบดเปเบเบญเบทเปเบเปเบ Data Science, เบเปเบฒเบเบเบฐเบเปเบญเบเบกเบตเบเบฑเบเบชเบฐเบเบฒเบเบเบนเบเบเบฒเบเบขเปเบฒเบเปเบเบทเปเบญเปเบซเปเปเบเปเบเปเปเบกเบนเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบงเบดเปเบเบฒเบฐ.
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบเบปเบโเปเบซเบฑเบโเบเบฒเบโเปเบเบฑเบโเบเบดเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบตเปโเบเบตเปโเปเบโเบชเบดเปเบโเบกเบฐโเบซเบฑเบโ
เปเบเบปเปเบฒเบกเบฑเบเปเบเบตเบเบเบฒเบเบเปเป?!
เบเปเปเบเปเบฒเบเบฒเบกเบเบตเปเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเปเปเปเบเบฑเบเบญเบฑเบเบเบฐเบฅเบฒเบเบเบตเปเบเบฑเปเบเบขเบนเปเปเบเบซเบปเบงเบเปเปเบเบญเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบกเบฑเบเบเบฐเบชเบฒเบกเบฒเบเปเบเปเบเบดเบเบเปเบฒเบเบญเบเปเบเบเบฒเบเบเบงเบ, เบเปเบญเบกเบเบฑเบเปเบฅเบทเปเบญเบเบชเบญเบเบชเบฒเบกเปเบฅเบทเปเบญเบเบเบฒเบเบเบฒเบเปเบเบตเบเบเบฒเบเบเบญเบเบเบนเปเบเบตเปเบเบทเบเบเบฒเบก. เบเบงเบโเปเบฎเบปเบฒโเบชเปเบงเบโเปเบซเบเปโเปเบซเบฑเบโเบเบตโเบงเปเบฒโเบเบฒเบโเปเบเบตเบโเบเบฒเบโเปเบเบฑเบโเบงเบดโเบเบตโเบเบตเปโเบเบตโเบเบตเปโเบเบฐโเปเบญเบปเบฒโเปเบโเปเบชเปโเปเบโเบชเบฐโเบเบฒเบโเปเบงเบโเบฅเปเบญเบกโเบงเบฑเบโเบเบฐโเบเบฐโเบเปเบฒโเปเบซเบกเปโเปเบฅเบฐโเปเบเบตเบโเบเบงเปเบฒเบโเบเบญเบโเปเบเบโเบเบญเบโเบเปเบฒเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบเบฒเบกเบเบฒเบเบเบปเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบกเบฑเบเบเบญเบเบซเบฒเบเบตเปเปเบฎเบทเบญเบเบดเบ, เบเปเบญเบเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเบญเบเบเบฐเบเปเปเปเบเบฑเบเบเบงเบ. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, Python เปเบเบปเปเบฒเบกเบฒเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเบเบงเบเปเบฎเบปเบฒเบขเบนเปเบเบตเปเบเบตเป.
เบงเบฝเบเบเบฒเบเบเปเบฒเบญเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเปเปเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบเบฅเบฐเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบตเปเปเบฎเบทเบญเบเบดเบเปเบกเปเบเบเบฐเปเบฅเบทเบญเบเปเบญเบปเบฒเปเบงเบเบตเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบญเบปเบฒเบเปเปเบกเบนเบ. เบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเบเปเปเปเบกเปเบเปเบฅเบทเปเบญเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบ, เปเบเปเปเบเบเบตเปเบชเบธเบเบเปเบญเบเปเบฅเบทเบญเบเบเปเบฅเบดเบเบฒเบ Kayak. เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฐเบเบฒเบเบฒเบกเบเปเบฅเบดเบเบฒเบเบเบญเบ Momondo, Skyscanner, Expedia, เปเบฅเบฐเบญเบทเปเบเปเบเปเบฒเบเบงเบเบซเบเปเบญเบ, เปเบเปเบเบปเบเปเบเบเบฒเบเบเบปเบเบเปเบญเบเบซเบธเปเบเบเบปเบเปเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบ impenetrable. เบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบซเบผเบฒเบเปเบเบฑเปเบ, เปเบเปเบฅเบเบฐเบเบตเปเบเปเบญเบเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเปเบเบเบฐเบฅเบฒเบเบญเบ, เบเบฒเบเบเปเบฒเบเบเบฒเบเบเปเบฒเบกเปเบฅเบฐเบฅเบปเบเบเบตเบ, เบเบฐเบเบฒเบเบฒเบกเปเบฎเบฑเบเปเบซเปเบฅเบฐเบเบปเบเบเปเบฒเบเปเบเบตเปเบเปเบญเบเปเบเบฑเบเบกเบฐเบเบธเบ, เบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบเบงเปเบฒ Kayak เปเบกเปเบเปเบซเบกเบฒเบฐเบชเบปเบกเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฐเปเบซเบฅเบเบซเบเปเบฒเปเบงเบฑเบเบซเบผเบฒเบเปเบเบตเบเปเบ. เปเบเปเบงเบฅเบฒเบชเบฑเปเบเป, เปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบเบเบฑเบเปเบฅเบตเปเบกเบเบปเปเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบเบฒเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเป bot เบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเปเบเบซเบฒเปเบงเบฑเบเปเบเบเปเปเบเปเบฅเบเบฐ 4 เบซเบฒ 6 เบเบปเปเบงเปเบกเบ, เปเบฅเบฐเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบต. เบเบฒเบเบเบฑเปเบ, เบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเปเบเบตเบเบเบทเปเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Kayak, เปเบเปเบเปเบฒเบเบงเบเปเบเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบกเปเบซเบฑเบเบเปเบฒเบเบเปเบงเบเบเบฒเบเบเบงเบเบชเบญเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบงเบเบกเบฑเบเบเปเบงเบเบเบปเบเปเบญเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบตเบ bot, เบซเบผเบทเบฅเปเบเปเบฒเบชเบญเบเบชเบฒเบกเบเบปเปเบงเปเบกเบเปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบเบเบงเบเบขเบธเบเปเบเบปเบฒ. เบเปเบฒเบเปเบฒเปเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเปเบเบเบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเปเบงเบเบตเบญเบทเปเบเปเบเปเบเปเบฒเบ, เปเบฅเบฐเบเปเบฒเบเปเบฒเบเปเบฎเบฑเบเปเบเบงเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบฒเบเบเบฒเบเบกเบฑเบเปเบเบเปเบฒเปเบซเบฑเบ.
เบเปเบฒเบเปเบฒเบเบเบฝเบเปเบเปเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบเบเบฒเบเบเบนเบเปเบงเบฑเบเปเบฅเบฐเบเปเปเบฎเบนเปเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเบฒเบเปเบงเบฑเบเปเบเบเปเบเปเปเบชเบนเปเบเบฑเบเบกเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบฒเบเบเปเบฒเบญเบดเบเบเบญเบเบเปเบฒเบเปเบเบเบทเปเบเบเบตเปเบเบตเป, เบเบปเปเบเปเบฎเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบเปเบฅเบฐเปเบฎเบฑเบเบเบฒเบเบเบปเปเบเบซเบฒ Google เปเบเบเปเบฒเบงเปเบฒ "เบกเบฒเบฅเบฐเบเบฒเบ web scraping". . เบเบฒเบเบเบปเบเบฅเบญเบเบเบญเบเปเบเบปเปเบฒเบญเบฒเบเบเบฐเบชเบดเปเบเบชเบธเบเปเบงเบเบงเปเบฒเบเบตเปเปเบเบปเปเบฒเบเบดเบ เบเปเบฒเปเบเบปเปเบฒเปเบฎเบฑเบเบเบฒเบเบเบนเบเปเบงเบฑเบเปเบเบเบเปเปเบชเบฐเบซเบผเบฒเบ.
เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ
เบเบตเปเปเบกเปเบเบเบฒเบเบฅเบงเบกเบเบปเปเบงเปเบเบเบญเบเบชเบดเปเบเบเบตเปเบเบฐเปเบเบตเบเบเบถเปเบเปเบเบฅเบฐเบซเบฑเบ scraper เปเบงเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
- เบเปเบฒเปเบเบปเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเบญเบเบเบฒเบ.
- เบเบณเบฅเบฑเบเปเบเบตเบเปเบเบ Google Chrome.
- เปเบเบซเบฒเบเบฑเบเบเบฑเบเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบ bot, เบเปเบฒเบเปเบกเบทเบญเบเปเบฅเบฐเบงเบฑเบเบเบตเบเบตเปเบเบฐเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบเบญเบเบซเบฒเบเบปเปเบง.
- เบเบฑเบเบเบฑเบเบเบตเปเปเบญเบปเบฒเบเบปเบเบเบฒเบเบเบปเปเบเบซเบฒเบเปเบฒเบญเบดเบ, เบเบฑเบเบฎเบฝเบเบเบฒเบกเบเบตเปเบเบตเบเบตเปเบชเบธเบ, เปเบฅเบฐเบเบฅเบดเบเปเบชเปเบเบธเปเบกเปเบเบทเปเบญเปเบซเบฅเบเบเบปเบเปเบเปเบฎเบฑเบเปเบเบตเปเบกเปเบเบตเบก.
- เบเบฑเบเบเบฑเบเบญเบทเปเบเปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบเบเบฒเบเบซเบเปเบฒเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบชเบปเปเบเบเบทเบเบเบญเบเบเปเปเบกเบนเบ.
- เบชเบญเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบกเบฒเปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบเบเปเบเปเบเบฐเปเบเบเบเบฒเบเบเบฑเบเบฎเบฝเบเบเบฒเบกเบฅเบฒเบเบฒเบเบตเป (เบฅเบฒเบเบฒเบเบทเบ) เปเบฅเบฐเปเบเบเบเบงเบฒเบกเปเบงเบเปเบฝเบงเบเบดเบ (เปเบงเบเบตเปเบชเบธเบ).
- เบเบนเปเปเบเปเบเบญเบเบชเบฐเบเบดเบเปเบเปเบเบทเบเบชเบปเปเบเบญเบตเปเบกเบงเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบเบปเบเบชเบฐเบซเบผเบธเบเบเบญเบเบฅเบฒเบเบฒเบเบตเป (เบเบตเปเบเบตเปเบเบทเบเบเบตเปเบชเบธเบเปเบฅเบฐเบฅเบฒเบเบฒเบชเบฐเปเบฅเปเบ), เปเบฅเบฐเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบเปเปเบกเบนเบเบเบตเปเบเบฑเบเบฎเบฝเบเปเบเบเบชเบฒเบกเบเบปเบงเบเบตเปเบงเบฑเบเบเบตเปเบเปเบฒเบงเบกเบฒเบเปเบฒเบเปเบเบดเบเบเบฐเบเบทเบเบเบฑเบเบเบถเบเปเบเบฑเบเปเบเบฅเป Excel.
- เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเปเบเบดเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบเบฎเบญเบเบงเบฝเบเบซเบผเบฑเบเบเบฒเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบปเบเปเบงเป.
เบกเบฑเบเบเบงเบเบเบฐเบชเบฑเบเปเบเบเบงเปเบฒเบเบธเบเปเปเบเบเบเบฒเบ Selenium เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบปเบงเบเบฑเบเปเบงเบฑเบ. เบเปเบญเบโเปเบเป
เบเบปเปเบเบเบทเปเปเบงเปเบงเปเบฒเปเบเปเบฅเบทเปเบญเบเบเบญเบเบเปเบญเบเบเปเบญเบเบเปเปเปเบเปเบเบฐเบเบฒเบเบฒเบกเปเบเบตเบเบเบญเบเปเบเบเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเปเปเบชเบฐเปเบซเบเบตเบเบตเปเบเบตเบเปเบฝเบงเบเบฑเบเบเบตเปเบเบปเบ. เบกเบตเบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบฒเบงเบซเบเปเบฒเบเบฒเบเบเปเบฒเบเบซเบผเบฒเบเปเบเบเบฒเบเบเบญเบเบซเบฒเบเบฒเบเบชเบฐเปเบซเบเบตเบเบฑเปเบเบเปเบฒเบง. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฝเบโเปเบเปโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเบชเบฐโเปเบซเบเบตโเปเบซเปโเบเบนเปโเบญเปเบฒเบโเบเบญเบโเปเบญโเบเบฐโเบชเบฒเบโเบเบตเปโเปเบเบฑเบโเบงเบดโเบเบตโเบเบตเปโเบเปเบฒเบโเบเบฒเบโเปเบเปโเบเบฐโเบเบดโเบเบฑเบโเปเบเบทเปเบญโเปเบเปโเปเบโเบเบฑเบโเบซเบฒโเบเบตเปโ.
เบเบตเปเปเบกเปเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบงเบปเปเบฒเบขเบนเปเบเปเบฒเบเปเบเบดเบ.
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
เปเบเปเบงเบตเปเบงเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบปเบเบเบธเปเบกเบเบปเปเบเบซเบฒ, เบเบปเบเปเบเปเบฎเบฑเบเบเบงเบเบเบฐเบเบฒเบเบปเบเบขเบนเปเปเบเบซเบเปเบฒ.
เปเบกเบทเปเบญเบเปเบญเบเปเบเปเบเปเบฒเบชเบฑเปเบ get
เบซเบผเบฒเบเบเบงเปเบฒเบชเบญเบเบซเบผเบทเบชเบฒเบกเปเบเบทเปเบญเบเบฒเบเปเบเบชเบญเบเบชเบฒเบกเบเบฒเบเบต, เบเปเบญเบเปเบเปเบเบทเบเบเปเปเบซเปเปเบฎเบฑเบเบชเปเบฒเปเบฅเบฑเบเบเบฒเบเบขเบฑเปเบเบขเบทเบเปเบเบเปเบเป reCaptcha. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบเบฒเบเบเบงเบเบชเบญเบเบเบตเปเบเปเบงเบเบเบปเบเปเบญเบเปเบฅเบฐเบชเบทเบเบเปเปเบเบฒเบเบเบปเบเบฅเบญเบเบเบปเบเบเปเบงเบฒเบฅเบฐเบเบปเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบงเบเบชเบญเบเปเบซเบกเป. เปเบกเบทเปเบญเบเปเบญเบเบเบปเบเบชเบญเบเบชเบฐเบเบดเบ, เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบญเบเบเบฐเบเบธเบกเบเบปเปเบเบซเบฒเบเปเบฒเบญเบดเบเปเบกเปเบเบชเบฐเปเบซเบกเบตเปเบเบขเปเบฒเบเบเปเบญเบเปเบเปเบง, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบปเบเบฅเบญเบเบฅเบฐเบซเบฑเบ, เบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบงเบเปเบเบดเปเบเบเปเบงเบเบเบปเบเปเบญเบเปเบฅเบฐเบเปเบญเบเปเบซเปเบฅเบฐเบซเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบเบฑเบเปเบฅเบเบฐ, เปเบเบเปเบเปเปเบฅเบเบฐเบซเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบปเปเบเบซเบฒ. เปเบฅเบฐ, เบเปเบฒเบเปเบฒเบเบเบดเบเบเปเบฝเบงเบเบฑเบเบกเบฑเบ, เบเบธเบเบเบปเบเปเบเบซเบเบถเปเบเบเปเปเบซเบเปเบฒเบเบฐเบเปเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบฅเบฒเบเบฒเบเบปเปเบงเบเบตเปเปเบเปเบฎเบฑเบเปเบเปเบฅเบเบฐ 10 เบเบฒเบเบตเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเปเบเบซเบฒ.
เปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบซเบเปเบฒเปเบเบเปเบเป XPath
เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบตเบเบเปเบญเบเบขเปเบฝเบกเปเบฅเบฐเปเบซเบผเบเปเบงเบฑเบเปเบเบเป. เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบเบฅเบฒเบเบฒเปเบฅเบฐเบเปเปเบกเบนเบเบญเบทเปเบเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเบเปเบเปเบฅเบเบต XPath เบซเบผเบทเบเบปเบงเปเบฅเบทเบญเบ CSS. เบเปเบญเบเบเบฑเบเบชเบดเบเปเบเบเบดเบเบเบฑเบ XPath เปเบฅเบฐเบเปเปเบฎเบนเปเบชเบถเบเบงเปเบฒเบเปเบญเบเปเบเปเบเบปเบงเปเบฅเบทเบญเบ CSS, เปเบเปเบกเบฑเบเบเปเปเปเบเบฑเบเปเบเปเบเปเบซเบผเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเบฑเปเบ. เบเบฒเบเบเปเบญเบเปเบเบซเบฒเปเปเบฒเปเบเปเบถเปเบเปเบเบเปเบเป XPath เบชเบฒเบกเบฒเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเบซเบเบธเปเบเบเบฒเบ, เปเบฅเบฐเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบปเปเบฒเบเบฐเปเบเปเปเบเบฑเบเบเบดเบเบเบตเปเบเปเบญเบเปเบเปเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบ
เบเบฑเปเบเบเบฑเปเบ, เปเบซเปเบชเบทเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบ bot. เปเบซเปเปเบเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบญเบเปเบเบฃเปเบเบฃเบกเปเบเบทเปเบญเปเบฅเบทเบญเบเบเบตเปเบฅเบฒเบเบฒเบเบทเบเบเบตเปเบชเบธเบ. เปเบเบฎเบนเบเบเปเปเปเบเบเบตเป, เบฅเบฐเบซเบฑเบเปเบฅเบทเบญเบ XPath เบเบทเบเปเบเบฑเปเบเปเบชเปเปเบเบฑเบเบชเบตเปเบเบ. เปเบเบทเปเบญเปเบเบดเปเบเบฅเบฐเบซเบฑเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฅเบดเบเบเบงเบฒเปเบชเปเบญเบปเบเบเบฐเบเบญเบเบซเบเปเบฒเบเบตเปเบเปเบฒเบเบชเบปเบเปเบเปเบฅเบฐเปเบฅเบทเบญเบเบเปเบฒเบชเบฑเปเบเบเบงเบเบเบฒเบเบฒเบเปเบกเบเบนเบเบตเปเบเบฒเบเบปเบ. เบเปเบฒเบชเบฑเปเบเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเปเบญเบตเปเบเบชเปเบฒเบฅเบฑเบเบญเบปเบเบเบฐเบเบญเบเบซเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบฅเบฐเบซเบฑเบเบเบตเปเบเบฐเบเบทเบเบชเบฐเปเบเบเปเบฅเบฐเปเบเบฑเปเบเปเบชเปเปเบเบเบปเบงเปเบเบดเปเบเบฅเบฐเบซเบฑเบ.
เปเบเบดเปเบเบฅเบฐเบซเบฑเบเบซเบเปเบฒ
เปเบเบทเปเบญเบเบญเบเบซเบฒเบเบฒเบเบขเบทเบเบขเบฑเบเปเบซเบเบเบปเบเบเบญเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบเบเปเปเปเบชเบเบเบญเบเบเบฒเบเบเบฑเบเบฅเบญเบเบเบปเบงเปเบฅเบทเบญเบเบเบฒเบเบฅเบฐเบซเบฑเบ, เปเบซเปเปเบญเบปเบฒเปเบเปเบชเปเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเปเปเบเบเบตเป.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเปเบเปเบฎเบฑเบเปเบกเบทเปเบญเบเปเบฒเบเบเบฑเบเบฅเบญเบเบฅเบฐเบซเบฑเบ:
//*[@id="wtKI-price_aTab"]/div[1]/div/div/div[1]/div/span/span
เปเบเบทเปเบญเบเบฑเบเบฅเบญเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฅเบดเบเบเบงเบฒเปเบชเปเบชเปเบงเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเบฒเบเบชเบปเบเปเบเปเบฅเบฐเปเบฅเบทเบญเบเบเปเบฒเบชเบฑเปเบ Copy> Copy XPath เบเบฒเบเปเบกเบเบนเบเบตเปเบเบฒเบเบปเบ.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบเปเปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบธเปเบกเบเบตเปเบเบทเบเบเบตเปเบชเบธเบ:
cheap_results = โ//a[@data-code = "price"]โ
เบชเบณเปเบเบปเบฒเบเบณเบชเบฑเปเบ > เบชเบณเปเบเบปเบฒ 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
).
เบชเบฒเบกเปเบชเบฑเปเบเบเปเบฒเบญเบดเบเบเบทเบเบชเบฐเปเบเบเปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเบเบธเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบกเบตเบงเบดเบเบตเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเปเบเบเบฒเบเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบ. เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเบเปเปเบกเบนเบเบเบฒเบเปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเปเบเบเบเปเบฒเบเบซเบฒเบ.
เปเบโเปเบฎเบฑเบโเบงเบฝเบ!
เบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบเบฝเบเบซเบเปเบฒเบเบตเปเปเบกเปเบเบเบฒเบเปเบซเบผเบเบเบปเบเปเบเปเบฎเบฑเบเปเบเบตเปเบกเปเบเบตเบก, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ. เบเปเบญเบเบเปเบญเบเบเบฒเบเปเบเบตเปเบกเบเปเบฒเบเบงเบเบเปเบฝเบงเบเบดเบเบเบตเปเปเบเบเบเบฒเบเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบ, เปเบเบเบเปเปเบกเบตเบเบฒเบเปเบเบตเปเบกเบเบงเบฒเบกเบชเบปเบเปเบชเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบเปเบฒเปเบเบชเบนเปเบเบฒเบเบเบงเบเบชเบญเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบปเบเบเบธเปเบก 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 เปเบเบดเปเบเบเบทเบงเปเบฒ.
เบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบเบเบญเบเบชเบฐเบเบฃเบดเบ
เบเบปเบเปเบเปเบฎเบฑเบ
เบเปเบฒเปเบเบปเปเบฒเปเบฎเบฑเบเปเบเปเปเบเบเบตเป, เบเปเบชเบฐเปเบเบเบเบงเบฒเบกเบเบดเบเบเบต! เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบกเบตเปเบเบทเปเบญเบเบเบนเบเปเบงเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบญเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเบเบฐเบเบฑเบเบเบธเบเบกเบฑเบ. เบเบปเบงเบขเปเบฒเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบฑเบ Twilio เปเบเบทเปเบญเปเบซเปเบกเบฑเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบญเบตเปเบกเบง. เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเปเบเป VPN เบซเบผเบทโเบญเบฑเบโเบญเบทเปเบโเปเบเปโเบเปเบญเบกโเบเบฑเบโเปเบเปโเบฎเบฑเบโเบเบปเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบซเบผเบฒเบ servers. เบเบฑเบเบกเบตเบเบฑเบเบซเบฒเบเบตเปเปเบเบตเบเบเบถเปเบเปเบเบฑเบเปเบเปเบฅเบฐเปเบฅเบเบฐเบเบฑเบเบเบฒเบเบเบงเบเบชเบญเบเบเบนเปเปเบเปเปเบงเบฑเบเปเบเบเปเปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบฅเบฒเบงเปเบเบฑเบเบเบปเบ, เปเบเปเบเบฑเบเบซเบฒเบเบตเปเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเป. เปเบเบเปเบฅเบฐเบเบตเปเบเบเปเปเบเบฒเบก, เบเบญเบเบเบตเปเบเปเบฒเบเบกเบตเบเบทเปเบเบเบฒเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบซเบเบฒเบเปเบเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เปเบซเปเปเบเปเปเบเบงเปเบฒเปเบเบฅเป Excel เบเบทเบเบชเบปเปเบเปเบเบซเบฒเบเบนเปเปเบเปเปเบเบฑเบเปเบเบฅเปเปเบเบเบเบฑเบเบญเบตเปเบกเบง.
เบเบฝเบเปเบเปเบเบนเปเปเบเปเบฅเบปเบเบเบฐเบเบฝเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบฎเปเบงเบกเปเบเบเบฒเบเบชเปเบฒเบซเบผเบงเบ.
เปเบเบปเปเบฒเปเบเปเปเบเบเปเบเปเบฅเบเบตเบเบฒเบเบเบนเบเปเบงเบฑเบเบเป?
-
เปเบกเปเบโเปเบฅเปเบง
-
เบเปเปโเบกเบต
เบเบนเปเปเบเป 8 เบเบปเบเบฅเบปเบเบเบฐเปเบเบเบชเบฝเบ. 1 เบเบนเปเปเบเปเบเบปเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com