Size: a a a

2020 June 24

i

ildar in Scrapy
вопрос только насколько этот селектолах совместим с lxml
источник

VB

Vladyslav Babych in Scrapy
ildar
а так, про миграцию, ты по-идее можешь реализовать наверное этот ::text, может быть даже тупо стырить его с parsel, или где-то в области работы с lxml подсунуть ему этот селехтолах
parsel для css селектора делает преобразование в xpath и дальше им юзается
источник

i

ildar in Scrapy
а если тут вот для начала попробовать подсунуть https://github.com/scrapy/parsel/blob/master/parsel/selector.py
источник

i

ildar in Scrapy
там вроде с html.HTMLParser относительно from lxml import html
источник

i

ildar in Scrapy
а вот про etree непонятно.
источник

VB

Vladyslav Babych in Scrapy
Может транслятор можно подсунуть как-то?
источник

i

ildar in Scrapy
еще про ускорение - если у тебя 50 селекторов, попробуй их выставить так, чтобы постепенно отсекать лишние части, т.е. к примеру если ты взял breadcrumbs, и дальше тебе надо брать описание товара справа, то часть дерева с картинками слева, breadcrumbs, футер страницы и меню тебе уже не нужно, ты можешь присвоить условно
breadcrumbs = response.css('blabla')
right_part = response.css('.right_part')
price = right_part.css('.price')
источник

A

Archie in Scrapy
ildar
еще про ускорение - если у тебя 50 селекторов, попробуй их выставить так, чтобы постепенно отсекать лишние части, т.е. к примеру если ты взял breadcrumbs, и дальше тебе надо брать описание товара справа, то часть дерева с картинками слева, breadcrumbs, футер страницы и меню тебе уже не нужно, ты можешь присвоить условно
breadcrumbs = response.css('blabla')
right_part = response.css('.right_part')
price = right_part.css('.price')
типо так запрос на сайт уже не делается а просто парсиш з уже предыдущего респонса?
источник

i

ildar in Scrapy
ээ, ну обычно там и так реквест новый на каждый чих делать не надо. Это скорее к тому, что парселю не надо по всему стояку  дом-дерева бултыхаться чтобы вытащить одну цену
источник

i

ildar in Scrapy
или ты хочешь сказать, что на каждое поле айтема делаешь новый запрос???
источник
2020 June 25

A

Archie in Scrapy
ildar
или ты хочешь сказать, что на каждое поле айтема делаешь новый запрос???
а хотя нет, я например в цикле ж беру один запрос и по нему делаю что надо, тоесть все селекторы были получаеться за один запрос к сайту
источник

i

ildar in Scrapy
да, хотя я не удивлюсь, если это хреновая оптимизация, потому-что я вот сейчас в коде parsel увидел lru_cache,  т.е. оно кеширует запросы какой-то там функции, и если вдруг этот кеш сохраняется между вызовами на верхнем уровне, то эта оптимизация наоборот будет вредна
источник

A

Archie in Scrapy
ildar
да, хотя я не удивлюсь, если это хреновая оптимизация, потому-что я вот сейчас в коде parsel увидел lru_cache,  т.е. оно кеширует запросы какой-то там функции, и если вдруг этот кеш сохраняется между вызовами на верхнем уровне, то эта оптимизация наоборот будет вредна
в scrapy нету кеширования?
источник

i

ildar in Scrapy
есть, я не про это, я про то, что там в коде parsel есть https://docs.python.org/3.3/library/functools.html#functools.lru_cache
но я хз чего он там делает)
источник

К

Кирилл in Scrapy
И что тебя смущает в lru_cache?
источник

i

ildar in Scrapy
меня ничего, я просто не смотрел для чего именно он там используется, пойду гляну)
источник

К

Кирилл in Scrapy
Еще не встречал чтоб кэш где-то что-то замедлял
источник

i

ildar in Scrapy
посмотрел, он там только на трансляции из css в xpath используется
источник

i

ildar in Scrapy
ээээ. так я и не говорил, что он что-то замедляет, я всеми руками за него обычно)
источник

i

ildar in Scrapy
"хреновая оптимизация" это я говорил про свое предложение "отсекать" ненужные участки DOM, если вдруг lru_cache и так кеширует условный путь до конечного селектора
источник