Туториал фром Семалт: Веб Сцрапинг Ин Питхон

Недавно сам посетио КиноПоиск (руска верзија ИМДБ) и сазнао да сам током година успео да оценим преко 1000 филмова. Мислио сам да би било занимљиво истражити ове податке: да ли се моји укуси филма мењају током времена? Током којих годишњих доба гледам још филмова?

Али пре него што анализирамо и изградимо прелепу графику, морамо да добијемо податке. Нажалост, многи сервиси немају јавни АПИ, тако да морате засукати рукаве и рашчланити хтмл странице.

Овај је чланак намијењен онима који су увијек жељели научити како користити Веб Сцраппинг, али нису успјели или нису знали гдје започети.

Задатак

Наш задатак је да извучемо податке о већ виђеним филмовима: наслов филма, датум и време гледања, оцена корисника.

У ствари, наш посао ће се обављати у 2 фазе:

Прва фаза: преузимање и спремање хтмл страница

Фаза 2: рашчланите хтмл у формату погодном за даљу анализу (цсв, јсон, пандас датафраме итд.)

Инструменти

Постоји пуно библиотека питхон-а за слање хттп-захтева. Најпознатији и врло згодан је Захтев.

Потребно је одабрати и библиотеку за анализу хтмл-а.

БеатифулСоуп, лкмл

Ово су две најпопуларније библиотеке за анализу хтмл-а, а избор једне од њих је само лична жеља. Штавише, ове библиотеке су уско повезане једна са другом: БеаутифулСоуп је почео да користи лкмл као унутрашњи парсер за убрзање, а у лкмл је додат модул за раздвајање супа. Да бих упоредио приступе, анализираћу податке са БеаутифулСоуп и користећи КСПатх селекторе у модулу лкмл.хтмл.

Преузимање података

Почнимо с преузимањем података. Прво, покушајмо да добијемо страницу по УРЛ-у и спремимо је у локалну датотеку.

Отварамо резултирајућу датотеку и видимо да није све тако једноставно: сајт нас је сматрао роботом и неће приказивати податке.

Откријмо како функционише сајт

Бровсер нема проблема у добијању информација са веб локације. Да видимо како тачно шаље захтев. Да бисмо то учинили, користимо панел „Мрежа“ у „Алаткама за развојне програмере“ у прегледачу (за то користим Фиребуг), обично је захтев који нам је потребан најдужи.

Као што видимо, прегледач такође шаље заглавља УсерАгент, колачић и други број параметара. Прво ћемо покушати да пошаљемо тачан УсерАгент у заглавље.

Овај пут смо успешни, а сада нам се дају потребни подаци. Вриједно је напоменути да понекад страница такође проверава валидност колачића, у том случају ће вам помоћи сесије у библиотеци Захтеви.

Преузмите све цене

Сада смо у могућности да сачувамо једну страницу са ценама. Али обично корисник има много стопа, па је потребно поновити све странице. Број странице који нас интересује је лако пренети директно на УРЛ.

Прикупљање података из Хтмл-а

Сада идемо директно на прикупљање података из хтмл-а. Најлакши начин за разумевање како је ХТМЛ страница организована је коришћењем функције "Испитај елемент" у претраживачу. У овом случају све је прилично једноставно: цела табела са стопама је у ознаци. Одаберите овај чвор:

од бс4 импорт БеаутифулСоуп

фром лкмл импорт хтмл

# Дивна супа

супа = БеаутифулСоуп (текст)

филм_лист = соу.финд ('див', ('цласс': 'профилеФилмсЛист'))

# лкмл

трее = хтмл.фромстринг (текст)

филм_лист_лкмл = трее.кпатх ('// див [@цласс =' 'профилеФилмЛист' ']') [0]

Научимо како да извучемо руски наслов филма и везу до странице филма (такође како да добијете текст и вредност атрибута).

Ако треба да извучете наслов на енглеском језику, само промените "намеРус" у "намеЕнг".

Резултати

Научили смо како да анализирамо веб локације, упознали смо се са захтевима библиотека, БеаутифулСоуп и лкмл, као и добили податке погодне за даљу анализу већ гледаних филмова на КиноПоиск.