Найти - Пользователи
Полная версия: Кэширование страниц (lxml)
Начало » Python для экспертов » Кэширование страниц (lxml)
1 2
Razor
Здраствуйте. Возникла проблема парсинга однотипных страниц. Очень-очень много. По сути, нужно считать всего одну строку на странице, Имеется ли в lxml возможность кэширования страницы для более быстрой подгрузки?
Master_Sergius
хз, но можно заюзать мультипроцессинг
doza_and
В таком случае обычно можно написать регулярное выражение которое много много быстрее…
Это конечно не отменяет мультипроцессинг.
PooH
Как вы себе это представляете? lxml распарсил документ и оставил его структуры в памяти? так ему тогда для следующего кроме парсинга еще и сравнение с этими структурами делать придется :)

ЗЫ: doza_and, прав, я бы тоже для одной строчки регулярку пользовал
Razor
Да, сравнение - это еще хуже) Вообще думал загружать что-то типа:
html = urllib.request.urlopen('http://site.ru/').read(1000)
но потом пришлось прерваться, ибо нужно было выдергивать с конца страницы кой-чего.

Ну, там не совсем одна строчка, если быть откровенным. Как минимум значений 10 выдергивать придется. А что посоветуете для большого количества загружаемых страниц: multiprocessing vs threads? Еще ни то, ни другое пока не юзал (таких задач не было глобальных), а почитав так и не понял, что использовать.
FishHook
Razor
Здраствуйте. Возникла проблема парсинга однотипных страниц. Очень-очень много. По сути, нужно считать всего одну строку на странице
Как то это выглядит не совсем правдоподобно. Откуда берутся эти много-много страниц, зачем они нужны?
Может это одна страница, и та самая строка обновляется AJAX-ом?
Razor
FishHook
Откуда берутся эти много-много страниц
Ну, не знаю, может высасываются из базы данных и обрабатываются PHP, исходников не давали) Как и самой базы, впрочем.
FishHook
зачем они нужны
Это, скорее, философский вопрос.

Сайт http://toster.ru/ , нужны просмотры, рейтинг и прочие радости жизни. Имеется код без потоков и мультипроцессов, работает медленно (только не знаю из-за чего: то ли один поток, то ли скорость интернета маленькая (а она маленькая), то ли Python не предназначен). Впрочем, последнее маловероятно.

Алгоритм прост: открываем -> парсим -> записываем значения в базу данных -> следующая страница и в начало
FishHook
Razor,
итак, допустим у нас есть страница по адресу www.foo.bar.ru.
Я так понимаю, что Вы парсите эту станицу с некой периодичностью и она каждый раз разная.
У Вас задача вычислять некую “уникальную информацию” при каждом обновлении.
Честно говоря, не понял где тут “ Очень-очень много”, ну фиг с ним.
Вопрос, Вы разобрались в разметке страницы, которую парсите? Вы уверены, что нужная Вам информация не получается аяксом? Вы уверены, что то, что Вы видите в браузере не сгенерировано JavaScript-ом?
Razor
FishHook
Вопрос, Вы разобрались в разметке страницы, которую парсите?
Разумеется.
FishHook
Вы уверены, что нужная Вам информация не получается аяксом? Вы уверены, что то, что Вы видите в браузере не сгенерировано JavaScript-ом?
Нет, не уверен.
Верны и остальные утверждения.

Я парсеры пишу не часто (2 раз), решил попробовать, что выйдет на питоне . Работает все нормально, но не слишком быстро, к сожалению. Каким образом мне поможет знание о генерации этих данных Ява/Джава/ЖабаСкриптом? Я могу это как то использовать, чтобы ускорить процесс?
FishHook
Вопроc, Вы разобрались в разметке страницы
Razor
Разумеется.
Вы уверены, что нужная Вам информация не получается аяксом
Razor
Нет, не уверен.
Это сильно!
Каким образом мне поможет знание о генерации этих данных Ява/Джава/ЖабаСкриптом?
Я не знаю, что Вы делаете, я задаюсь вопросом: если у Вас есть “ Очень-очень много” одинаковых страниц с одного адреса, какого черта их очень-очень много? Вы дали адрес, я обновлял страницу по этому адресу раз в 3 секунды в течении пяти минут - она не изменилась визуально. Откуда Вы взяли их очень много, я не понял. Предположил, что возможно Вы имеете дело с одностраничным сайтом и пытаетесь его парсить обычными методами.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB