@DarkByte2015

Почему не доходит контент?

Есть одна мысля. Хочу сграббить много музыки с сервиса zaycev.net. Начал писать парсер на питоне и встал на одном месте... Короче там у них интеграция с mail.ru. Точнее поиск от mail.ru. Ну так вот я например шлю такой запрос "go.mail.ru/zaycev?q=Hilary+Duff", а в ответ мне приходит не полный контент. Т.е. буквально нет 300+ строк кода. Я просто попытался засниффить этот запрос фиддлером. В нем все нормально. Тогда я взял из фиддлера на всякий случай еще все заголовки запроса и постманом сделал запрос с ними - та же фигня что и в питоне - нету части контента. Вот как так может быть? Была мысль что может этот контент генерируется жабаскриптом, но фиддлер же получил весь контент, а он не стал бы думаю выполнять никакие скрипты. Значит отпадает. Прямо магия какая-то...

П.С. Ошибка не в питоне точно, т.к. постман тоже контент недополучает.

Впрочем мне не жалко, кода то 5 копеек:
import sys
from pyquery import PyQuery as pq
import urllib
import json

SEARCH_URL = 'http://go.mail.ru/zaycev'

def get_search_results(query):
    q = urllib.urlencode({'q': query})
    url = '%s?%s' % (SEARCH_URL, q)
    d = pq(url = url)
    print([ a.text() for a in d('.page-navig a').items()])

    for e in d('li.result__li').items():
        a = e('.result__title a')
        yield {
            'track': a.text(),
            'link': a.attr('href')
        }

def main(args):
    r = list(get_search_results('Hillary Duff'))

    with open('output.json', 'wb') as o:
        json.dump(r, o, sort_keys = True, indent = 4)

if __name__ == '__main__':
    main(sys.argv)


Когда скачиваю отсутствует блок page-navig (кнопки вперед / назад, мне нужны чтобы определить есть ли еще страницы), а также часть результатов (блоков result__li), например в запросе который я тестил (в коде) их 6, а в браузере намного больше (плюс там еще не одна страница их).
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
eudj1n
@eudj1n
def main(args):
    r = list(get_search_results('Hilary Duff'))

    with open('output.json', 'wb') as o:
        json.dump(r, o, sort_keys = True, indent = 4)

Опечатка в имени артиста в самом коде. Сравните выдачу: go.mail.ru/zaycev?q=Hillary+Duff и go.mail.ru/zaycev?q=Hilary+Duff
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы