Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 26, 2013 09:06:27

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

Здраствуйте. Возникла проблема парсинга однотипных страниц. Очень-очень много. По сути, нужно считать всего одну строку на странице, Имеется ли в lxml возможность кэширования страницы для более быстрой подгрузки?

Офлайн

#2 Дек. 26, 2013 17:47:22

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

хз, но можно заюзать мультипроцессинг



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Дек. 26, 2013 22:30:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

В таком случае обычно можно написать регулярное выражение которое много много быстрее…
Это конечно не отменяет мультипроцессинг.



Отредактировано doza_and (Дек. 26, 2013 22:31:10)

Офлайн

#4 Дек. 27, 2013 04:16:51

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

Как вы себе это представляете? lxml распарсил документ и оставил его структуры в памяти? так ему тогда для следующего кроме парсинга еще и сравнение с этими структурами делать придется :)

ЗЫ: doza_and, прав, я бы тоже для одной строчки регулярку пользовал



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Дек. 27, 2013 15:11:10

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

Да, сравнение - это еще хуже) Вообще думал загружать что-то типа:

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

Ну, там не совсем одна строчка, если быть откровенным. Как минимум значений 10 выдергивать придется. А что посоветуете для большого количества загружаемых страниц: multiprocessing vs threads? Еще ни то, ни другое пока не юзал (таких задач не было глобальных), а почитав так и не понял, что использовать.

Офлайн

#6 Дек. 27, 2013 15:42:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

Razor
Здраствуйте. Возникла проблема парсинга однотипных страниц. Очень-очень много. По сути, нужно считать всего одну строку на странице
Как то это выглядит не совсем правдоподобно. Откуда берутся эти много-много страниц, зачем они нужны?
Может это одна страница, и та самая строка обновляется AJAX-ом?



Отредактировано FishHook (Дек. 27, 2013 15:44:21)

Офлайн

#7 Дек. 27, 2013 16:17:33

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

FishHook
Откуда берутся эти много-много страниц
Ну, не знаю, может высасываются из базы данных и обрабатываются PHP, исходников не давали) Как и самой базы, впрочем.
FishHook
зачем они нужны
Это, скорее, философский вопрос.

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

Алгоритм прост: открываем -> парсим -> записываем значения в базу данных -> следующая страница и в начало

Отредактировано Razor (Дек. 27, 2013 16:22:55)

Офлайн

#8 Дек. 27, 2013 18:28:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

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



Офлайн

#9 Дек. 27, 2013 18:34:02

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

FishHook
Вопрос, Вы разобрались в разметке страницы, которую парсите?
Разумеется.
FishHook
Вы уверены, что нужная Вам информация не получается аяксом? Вы уверены, что то, что Вы видите в браузере не сгенерировано JavaScript-ом?
Нет, не уверен.
Верны и остальные утверждения.

Я парсеры пишу не часто (2 раз), решил попробовать, что выйдет на питоне . Работает все нормально, но не слишком быстро, к сожалению. Каким образом мне поможет знание о генерации этих данных Ява/Джава/ЖабаСкриптом? Я могу это как то использовать, чтобы ускорить процесс?

Офлайн

#10 Дек. 27, 2013 18:56:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Кэширование страниц (lxml)

Вопроc, Вы разобрались в разметке страницы
Razor
Разумеется.
Вы уверены, что нужная Вам информация не получается аяксом
Razor
Нет, не уверен.
Это сильно!
Каким образом мне поможет знание о генерации этих данных Ява/Джава/ЖабаСкриптом?
Я не знаю, что Вы делаете, я задаюсь вопросом: если у Вас есть “ Очень-очень много” одинаковых страниц с одного адреса, какого черта их очень-очень много? Вы дали адрес, я обновлял страницу по этому адресу раз в 3 секунды в течении пяти минут - она не изменилась визуально. Откуда Вы взяли их очень много, я не понял. Предположил, что возможно Вы имеете дело с одностраничным сайтом и пытаетесь его парсить обычными методами.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version