Size: a a a

2021 January 30

AR

Andrey Rahmatullin in Scrapy
вряд ли есть доки про всё это
источник

S

SoHard 🎄 in Scrapy
Alex Python
передача куки между сайтами и ТД и тп , я понимаю что это многим просто как открыть калькулятор, но я хочу разобраться, а не тыкать рандомно пока все не получится
ну смотри есть параметр в куке или хедере гуглишь его и узнаёшь для чего он и за что отвечает
источник

S

SoHard 🎄 in Scrapy
а вообще можно оставить всё как есть в браузере и менять только то что тебе нужно
источник

К

Кирилл in Scrapy
Alex Python
кто нить подкинет годную инфу, гайд по поводу post get запросов) ?А то я новичок в этом, трахаюсь по несколько дней с одним сайтом, а хочется за пол часа
В RFC есть почти все о том как оно должно быть, запросы заголовки и т.п., но там такая нудятина что сложно читать. Но потом приходят разрабы и лепят что могут на серверах, так что даже те же get post запросы иногда можно встретить в очень извращенных формах. Статусы для ответов тоже часто с потолка берут, и по факту они будут значить не то что в стандартах написано
источник

AP

Alex Python in Scrapy
Кирилл
В RFC есть почти все о том как оно должно быть, запросы заголовки и т.п., но там такая нудятина что сложно читать. Но потом приходят разрабы и лепят что могут на серверах, так что даже те же get post запросы иногда можно встретить в очень извращенных формах. Статусы для ответов тоже часто с потолка берут, и по факту они будут значить не то что в стандартах написано
ну хотяб что то) ссыль кинь плиз )
источник

AP

Alex Python in Scrapy
я блин пол дня как то трахался с логином на сайт, прям психовал и с нуля  переписывал, а всего то забыл передать сраный referer
источник

AR

Andrey Rahmatullin in Scrapy
Alex Python
ну хотяб что то) ссыль кинь плиз )
2616 же
источник

S

SoHard 🎄 in Scrapy
Alex Python
ну хотяб что то) ссыль кинь плиз )
ты не будешь читать то что в рфс
источник

К

Кирилл in Scrapy
Alex Python
ну хотяб что то) ссыль кинь плиз )
Посмотри в вике по RFC, там много разных ссылок на разные стандарты и протоколы, выбирай какая нравится
источник

AP

Alex Python in Scrapy
попробую)
источник

i

i in Scrapy
Подскажите - есть у меня реквестовая sess = requests.Session(), к ней потом добавляются заголовки, кукисы и прочее, как бы ее пошарить в пул multiprocessing, так, чтобы она передавалась с одинаковыми кукисами в функцию, по которой пробегает map, ну или шарилась между всеми запросами?
1. Я не очень понял - сессию создавать надо до или после строчки if __name__ == "__main__": - я пока создаю ее после, потом создаю уже with pool и пробегаюсь стармапом по пулу, если я ее создаю до - то все действия почему-то как-то непонятно повторяться начинают.
2. Можно ли сделать так (см. sess как третий аргумент для стармапа):
import itertools
with multiprocessing.Pool(4) as pool:
   cur_data = pool.starmap(get_cur_data, zip(repeat(same_arg), inside_links, repeat(sess)))

ну и внутри get_cur_data
r = sess.get(inside_link, verify=verify)
return r.text
источник

i

i in Scrapy
я пока еще не знаю, взлетит или нет пункт 2, жду пока скрипт пробежится 😊
источник

i

i in Scrapy
мде, ну вроде сработало, по-крайней мере логин и цена сниженная сохранились)
источник

К

Кирилл in Scrapy
i
Подскажите - есть у меня реквестовая sess = requests.Session(), к ней потом добавляются заголовки, кукисы и прочее, как бы ее пошарить в пул multiprocessing, так, чтобы она передавалась с одинаковыми кукисами в функцию, по которой пробегает map, ну или шарилась между всеми запросами?
1. Я не очень понял - сессию создавать надо до или после строчки if __name__ == "__main__": - я пока создаю ее после, потом создаю уже with pool и пробегаюсь стармапом по пулу, если я ее создаю до - то все действия почему-то как-то непонятно повторяться начинают.
2. Можно ли сделать так (см. sess как третий аргумент для стармапа):
import itertools
with multiprocessing.Pool(4) as pool:
   cur_data = pool.starmap(get_cur_data, zip(repeat(same_arg), inside_links, repeat(sess)))

ну и внутри get_cur_data
r = sess.get(inside_link, verify=verify)
return r.text
1. Конечно после, конструкция if name пишут для того, чтоб у тебя ничего левого не было во время импорта твоего скрипта, если ты что-то вызываешь до, то и смысла в этом ифе нет.
2. Не совсем понятно, что тут. Если тебе нужно просто статичиские данные передавать, то просто передавай. Если нужно как-то синхронизировать между процессами, передавай то, что может быть сразу в нескольких процессах https://docs.python.org/3/library/multiprocessing.html#sharing-state-between-processes
источник

i

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

i

i in Scrapy
Кирилл
1. Конечно после, конструкция if name пишут для того, чтоб у тебя ничего левого не было во время импорта твоего скрипта, если ты что-то вызываешь до, то и смысла в этом ифе нет.
2. Не совсем понятно, что тут. Если тебе нужно просто статичиские данные передавать, то просто передавай. Если нужно как-то синхронизировать между процессами, передавай то, что может быть сразу в нескольких процессах https://docs.python.org/3/library/multiprocessing.html#sharing-state-between-processes
1. про if name в этом применении понятно, просто почему-то вообще этот мультипроцессинг без него не взлетает, надо будет подробнее почитать про эту магию.
2. я еще игрался там с Value, для счетчика, но что-то не захотело у меня это взлетать, так-что плюнул)
источник

К

Кирилл in Scrapy
С пулами точно не подскажу как они там работают, я больше знаю про обычные процессы и форки
источник

i

i in Scrapy
но надо будет еще поиграться - пока у меня там по  заветам ответа с 10 плюсами на стековере все-время орет "у тебя нету переменной counter" :
https://stackoverflow.com/questions/2080660/python-multiprocessing-and-a-shared-counter
источник

i

i in Scrapy
а так прикольная конечно штука - сервак аж от натуги начал 429мы кряхтеть, пришлось выставлять pool size в 4.
источник

К

Кирилл in Scrapy
i
но надо будет еще поиграться - пока у меня там по  заветам ответа с 10 плюсами на стековере все-время орет "у тебя нету переменной counter" :
https://stackoverflow.com/questions/2080660/python-multiprocessing-and-a-shared-counter
Ну, с этим просто, тут зависит от того где у тебя объявление чего-то и где создаёться новый процесс, если объявление до разделения процесса, и эта переменная шэрэд памяти, тогда у обоих процессов будет к ней доступ. А если такую переменную создавать после разделения процессов, тогда она будет для каждого процесса своя.
Думай о форке процесса, как о создании полной копии текущего процесса, в момент создания это полностью идентичные копии, а дальше они расходятся.

Если бы у тебя были треды, а не процессы, тогда оно бы работало примерно так же, только было бы достаточно  простой глобальной переменной которая была бы в куче, а так как процессы полностью изолированы друг от друга, то им нужны общие области памяти, или другие методы коммуникации, чтоб они видели что-то общее.
источник