
Maxim
26.01.2017
23:42:27
естеснвенно, дальше ничего не полуится
потому что .get работает с суповским классом тег
и изз него извлекает
следует переименовать if company_trim1 is None:
xxxxxxxxxxxxx = company_trim2.get_text('title')

Google

Maxim
26.01.2017
23:44:04
чтобы сохранился тэг в переменной

53r63rn4r
26.01.2017
23:44:15
Ххххххххх классное имя переменной, по жопе бы надавать

Maxim
26.01.2017
23:44:41
и вместо " if name is not None:" прост 'if not name:'
ну блин, понятно, что прост, чтобы в чатик быстрее написать)

53r63rn4r
26.01.2017
23:45:13
Ну или если оно в контексте примера.. То ладно
Я уже понял

Filip
26.01.2017
23:46:20
Окей, получается, если-бы я перенёс часть кода с `link` над итерацией `company_trim1`
то, должно-бы было работать, так?

Maxim
26.01.2017
23:47:15
д

Filip
26.01.2017
23:47:21
не работает
точнее как, программа пробежалась, но `print ('link')
f
а нет, сек

Google

Filip
26.01.2017
23:48:32
а нет, всё работает. Я всё понял, спасибо большое

Maxim
26.01.2017
23:48:49
)
company_trim1 = row.find('a', class_="company-name")
link = company_trim1 = row.find('a', class_="company-name")
это кстати какая-то непоянтная жесть)

Filip
26.01.2017
23:49:40
Ну и потом, это мой первый код в жизни... :D

Maxim
26.01.2017
23:50:44
я про то, что по сути, написано:
a = b
c = a = b
)

Filip
26.01.2017
23:51:08
Ну да, там ссылка просто меняется
а
понял, это я случайно
спасибо :D
А на будущий ресёрч, посоветуйте плиз, какие либы использовать для интеграции с браузером и экселем?

Stanislav
27.01.2017
00:08:44

Filip
27.01.2017
00:09:56
т.к. это линкед, я не смогу делать этого онлайн, грубо говоря

Stanislav
27.01.2017
00:10:34

Filip
27.01.2017
00:10:44
linkedin.com

Stanislav
27.01.2017
00:11:04

Filip
27.01.2017
00:11:37
Нужно логиниться
для того что-бы выполнить сёрч

Google

Stanislav
27.01.2017
00:12:01
Для этого
А) Использовать selenium, выполняет весь js код
Б) Вкладка Network в dev tools в Chrome, разборка запросов и алгоритма логина. Отправка таких же запросов через requests

Filip
27.01.2017
00:14:48
Окей, но я подозреваю, если парсер за меня будет прыгать по страницам, аккаунт могут потенциально забанить, так ведь:?

Stanislav
27.01.2017
00:14:51
После логина в сессии сохранятся куки и сможешь получать доступ к страницам недоступным без логина

Filip
27.01.2017
00:15:45
Я не могу просто этого допустить, т.к. аккаунт проплаченый и не мой :)


Stanislav
27.01.2017
00:19:38
Окей, но я подозреваю, если парсер за меня будет прыгать по страницам, аккаунт могут потенциально забанить, так ведь:?
Да, если отследят что ты робот
Для того чтобы не доказали что ты робот нужно полностью знать их алгоритм защиты.
У тебя его нет и не будет (его там вообще может не быть)
По этому защищаемся по максимуму - подделываем юзер агента, не шлем запросы часто, между запросами делаем рандомную паузу.
Если там есть жс код который участвует в определение робота и сервер должен получать данные от него, а с юзанием реквестов жс код не выполняется, поэтому тоже могут заманить.
Так что для секьюра лучше юзать селениум, но это костыльнее, менее производительно, зато более функционально (чего стоит обход динамически генерируемых элементов нужных для парсинга)
Поскольку в задаче стоит вопрос с конкретным акком - то прокси менять не стоит, могут подумать что взломали и тп.


Filip
27.01.2017
00:24:17
Да, если отследят что ты робот
Для того чтобы не доказали что ты робот нужно полностью знать их алгоритм защиты.
У тебя его нет и не будет (его там вообще может не быть)
По этому защищаемся по максимуму - подделываем юзер агента, не шлем запросы часто, между запросами делаем рандомную паузу.
Если там есть жс код который участвует в определение робота и сервер должен получать данные от него, а с юзанием реквестов жс код не выполняется, поэтому тоже могут заманить.
Так что для секьюра лучше юзать селениум, но это костыльнее, менее производительно, зато более функционально (чего стоит обход динамически генерируемых элементов нужных для парсинга)
Окей, спасибо за развёрнутый ответ. Я собственно так и пытался "защититься" - просто, сохранять html страницы и впоследствии парсить, как такая идея?

Stanislav
27.01.2017
00:24:59

Filip
27.01.2017
00:27:08
ну и, впоследствии, что-бы и уже скрапил из сохраннёных файлов html

Stanislav
27.01.2017
00:30:05

Filip
27.01.2017
00:31:18

Stanislav
27.01.2017
00:32:09
Только получение страницы или выполнение действий на ней

Filip
27.01.2017
00:32:53
А сохранение?

Stanislav
27.01.2017
00:38:28
А сохранение?
А зачем сохранение?
Зашёл на ссылку, нажал на кнопку, динамически сгенерировалась коробочка с серыми данными, нашёл коробочку, получил нужные ссылки например в ней (это все в оперативной памяти), записал в эксель и пошёл на следующую ссылку

Filip
27.01.2017
00:39:28
Но ведь если сохранение не отслеживается вообще никак - то это беспроигрышный вариант

Stanislav
27.01.2017
00:40:47
Я же сказал процесс парсинга никак не отслеживается

Google

Filip
27.01.2017
00:47:57
Я просто где-то слышал другие мнения, сам конечно ничего не утверждаю
Я ещё поинтересуюсь, но пока-что буду придерживаться твоего мнения

Stanislav
27.01.2017
00:49:50

Filip
27.01.2017
00:51:54
Ну, или так
u get my point

Stanislav
27.01.2017
00:53:27

Filip
27.01.2017
00:53:51

Admin
ERROR: S client not available

Stanislav
27.01.2017
00:54:10
Реквесты - голые запросы к серверу, по http/s протоколу

Filip
27.01.2017
00:54:42
Ага, я понял
Спасибо за инфу, доброй ночи :)

Stanislav
27.01.2017
01:07:55
Спасибо

Petr
27.01.2017
03:31:27
RabbitMQ имеет какое-нибудь ограничение на длину передаваемого сообщения?

Zloy geniy
27.01.2017
06:37:59
почему джанго админ не создает проект,пишет : "django-admin" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
хотя у других в видео все работает ) у меня создает проект только исключительно в корневой папке питона

Dan
27.01.2017
06:40:35
django-admin.py вроде надо запускать

Anonymous*
27.01.2017
06:42:35
значит файла такого нет

Dan
27.01.2017
06:48:11
django-admin.py устанавливается в область видимости используемого python
если работает в virtualenv то его можно запусть после активации оного
если работаете напрямую в системе то доступен везде

Google

Dan
27.01.2017
06:48:26
естественно доступен после установки django

Petr
27.01.2017
06:52:17
Не могу понять суть блокирующего ввода/вывода и ассинхронности. Мне по осям книжку читать?

Artem
27.01.2017
06:54:38

Zloy geniy
27.01.2017
06:55:53

Igor
27.01.2017
06:56:21
файл есть, PATH/PYTHONPATH не тот?
./django-admin.py, в конце концов

Zloy geniy
27.01.2017
06:56:39
что???

Igor
27.01.2017
06:57:07
https://docs.djangoproject.com/en/1.10/faq/troubleshooting/#command-not-found-django-admin

Dan
27.01.2017
06:57:17

Igor
27.01.2017
06:57:22
я так, для примера
если PATH и прочие virtualenvы лениво настраивать

Zloy geniy
27.01.2017
06:58:02
ыыну я установил через пип виртуал
его надо активировать?
ну*
кстати пай чарм нормальная тема ))

Dmitriy
27.01.2017
07:21:01
yes

Petr
27.01.2017
07:34:59

Artem
27.01.2017
07:39:27
Ну тут поверхностно и про веб,а я про саму суть. Например простая запись на диск получается тоже блокирующий ввод/вывод?
да. и запись на диск, и считывание данных из сокета.
блокирующая потому, что твоя функция, считывающие данные с диска, сидит и ждёт, пока эти данные считаются, а потом уже продолжает работу.
А можно пойти другим путём. Поставить while True, запустить считываение данных и внутри него проверять, считалось или нет. Если да, продолжать работу с этой функцией, а если нет, поделать что-то ещё какое-то время.
Вот этот самый while True называется событийным циклом в асинхронщине.

Dmitriy
27.01.2017
07:40:43
Не стоит только забывать http://stackoverflow.com/a/2625565
Хотя в доке по торнаде это описано
Эта группа больше не существует