Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2022 13:50:32

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1337
Репутация: +  116  -
Профиль   Отправить e-mail  

парсинг авито

py.user.next
Он не так прост, как кажется
его код я подправил и у меня печатает ссылки на объявления по запросу
просто он тупо не может запустить свой файл, ему надо input() в конце прописать, может его код срабатывает и закрывается, как это бывает в виндовском терминале

Офлайн

#2 Сен. 9, 2022 14:20:05

roobee147
Зарегистрирован: 2022-09-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг авито

 parcer2.py : Имя "parcer2.py" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после че
го повторите попытку.
строка:1 знак:1
+ parcer2.py
+ ~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (parcer2.py:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
Suggestion [3,General]: Команда parcer2.py не найдена, однако существует в текущем расположении. По умолчанию оболочка Windows PowerShell не загружает команды из текущего расположения. Если вы уверены 
в надежности команды, введите ".\parcer2.py". Для получения дополнительных сведений вызовите справку с помощью команды "get-help about_Command_Precedence".

Офлайн

#3 Сен. 9, 2022 14:28:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9795
Репутация: +  849  -
Профиль   Отправить e-mail  

парсинг авито

xam1816
его код я подправил и у меня печатает ссылки на объявления по запросу
Ну, вот ты мой код запусти короткий. Твой-то я запускал, ничего не выводит у меня, потому что нет там в ответе классов этих.
  
>>> from bs4 import BeautifulSoup
>>> import requests
>>> 
>>> def f():
...     product = input()
...     url = "https://www.avito.ru/rossiya?q=" + product
...     request = requests.get(url)
...     bs = BeautifulSoup(request.text, "html.parser")
...     all_links = bs.find_all('div', class_='iva-item-titleStep-pdebR')
...     for link in all_links:
...         a = link.find('a', href=True)
...         if a:
...             print('https://www.avito.ru' + a['href'])
... 
>>> f()
cat
>>> f()
кошка
>>>

roobee147
parcer2.py : Имя "parcer2.py" не распознано как имя командлета
Не используй PowerShell. Вот ты запускал нормально, через cmd.exe.



Офлайн

#4 Сен. 9, 2022 15:22:01

roobee147
Зарегистрирован: 2022-09-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг авито

Ебал я в рот этот питон, всем спасибо, топик закрыт.

Прикреплённый файлы:
attachment изображение_2022-09-09_152157052.png (801,5 KБ)

Офлайн

#5 Сен. 9, 2022 16:21:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9795
Репутация: +  849  -
Профиль   Отправить e-mail  

парсинг авито

Тут дело в винде. Так-то полинтернета на питоне работает. Instagram, YouTube и так далее. А винду пишут индийцы дешёвые, поэтому там периодически обновления ломают систему саму, нет совместимости между частями системы, отовсюду торчат уши тридцатилетней давности типа этих однобайтовых кодировок (из-за которых-то и надо эти пути с русских букв на английские переделывать). Такой у них бизнес: побыстрее сделать и продать, а дальше хоть трава не расти. PowerShell, например, проверяет скрипты перед запуском, даже если его не просишь об этом. Поэтому если он не настроен правильно, он может тебе просто вырубать скрипты, хотя ты его об этом не просишь. И вот такой тупости там всякой вагон и маленькая тележка.



Офлайн

#6 Сен. 9, 2022 17:33:03

roobee147
Зарегистрирован: 2022-09-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг авито

py.user.next
Тут дело в винде. Так-то полинтернета на питоне работает. Instagram, YouTube и так далее. А винду пишут индийцы дешёвые, поэтому там периодически обновления ломают систему саму, нет совместимости между частями системы, отовсюду торчат уши тридцатилетней давности типа этих однобайтовых кодировок (из-за которых-то и надо эти пути с русских букв на английские переделывать). Такой у них бизнес: побыстрее сделать и продать, а дальше хоть трава не расти. PowerShell, например, проверяет скрипты перед запуском, даже если его не просишь об этом. Поэтому если он не настроен правильно, он может тебе просто вырубать скрипты, хотя ты его об этом не просишь. И вот такой тупости там всякой вагон и маленькая тележка.
Ну все равно спасибо тебе

Офлайн

#7 Сен. 9, 2022 19:05:13

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2728
Репутация: +  183  -
Профиль   Отправить e-mail  

парсинг авито

xam1816
if a := link.find('a', href=True):
Никогда не используй оператор := Это не по феншую.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Сен. 9, 2022 21:30:28

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

парсинг авито

тут только с ТГ бота работет



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#9 Сен. 10, 2022 01:07:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9795
Репутация: +  849  -
Профиль   Отправить e-mail  

парсинг авито

Rodegast
Никогда не используй оператор := Это не по феншую.
У меня он вообще не срабатывает.
  
>>> if x := 1:
  File "<stdin>", line 1
    if x := 1:
          ^
SyntaxError: invalid syntax
>>>
При этом у меня не самый старый питон. То есть обновлять питон ради одной строчки в одном скрипте я бы не стал.

xam1816, представь просто, что твой скрипт попадает в локальную сеть, про которую ты даже не знаешь, что она вообще существует (таких сетей примерно десятки тысяч), где стоит питон среднего возраста там на пятидесяти компьютерах примерно. Ты думаешь, все бросятся обновлять эту сеть? Не, они просто выкинут твой скрипт и возьмут другой. Может быть, просто перепишут твой скрипт в более генерализованную форму, а может, просто скажут “а что нам возиться сейчас с этим? у нас сейчас на это времени нет, нам сейчас надо какую-нибудь бактериологическую или геологическую хрень считать, так что давайте другой скрипт возьмём”. И всё. Твой скрипт вот так и помрёт. Там не подошёл, тут не подошёл - и всё, про него забыли. А работает везде в итоге что-то другое, более простое и так далее. Вот то, что запускается везде, вот оно и будет жить. Посмотри на Linux, которая на любом пылесосе, телевизоре, холодильнике сейчас стоит. А Windows там нет, хотя они бы очень хотели просунуть её где только можно, даже смартфон пытались сделать свой. Linux везде живёт, потому что она везде ставится, ко всему адаптируется легко. Это не говоря о том, что она у всех в кармане сейчас находится в виде Android, а они даже не знают об этом, что это Linux. Питон точно так же распространился, его легко ставить везде, он везде подходит, для него ничего не надо. Чем проще, тем лучше.

Что касается самого оператора присваивания. В питон он такой “неудобный” изначально не потому, что про него не знали и поэтому не додумались его реализовать. Питон как раз делали по образу и подобию сишника (в котором этот оператор был изначально) только с ООП-инструментами и расширениями. И добавили его сейчас не потому, что его там не было и его забыли сделать, а потому, что он всё-таки иногда кому-то нужен. В сишнике тоже, знаешь, оператор goto не стали вырезать точно по той же причине. Не потому, что его удобно там использовать и так далее, а потому, что иногда каким-то профи он очень нужен и они его используют при этом, очень хорошо себе представляя, какой вред он наносит, когда он испольуется в повседневной разработке.

Сделай import this и перечитай все правила
Вот там есть правило
Flat is better than nested.

Умный код - это не тот, в котором мало строчек. Умный код - это тот, который после его написания легко дописывать дальше. Соответственно, какое-то присваивание отдельное можно легко заменить на вызов функции.

Вот пример, как дописывается код
Было
  
x = 4
 
if x > 3:
    print(x)
Стало
  
def f(x):
    return x ** 2
 
x = f(2)
 
if x > 3:
    print(x)
Особенность дописывания кода здесь в том, что весь оператор if вообще никак не затрагивается. Если он проверен и гарантированно работает, то ничто его не нарушает. Он как работал, так и работает дальше. Его не надо снова проверять, он не менялся.

И вот пример, как дописывается код с “умными” вставками
Было
  
if (x := 4) > 3:
    print(x)
Стало
  
def f(x):
    return x ** 2
 
if (x := f(2)) > 3:
    print(x)
Оператор if поменялся. Теперь его снова надо проверять и подтверждать его правильную работу.

Теперь умножь эти все операторы if, for, while и так далее на тысячу. В коде их далеко не один обычно. В итоге ты будешь сидеть и проверять тысячу операторов, которые ты уже проверял раньше, повторно. Когда ты устанешь их проверять повторно уже десятый раз, ты перестанешь их проверять. Когда ты перестанешь их проверять, ты станешь наугад писать их и думать про них чисто теоретически, что они продолжают правильно работать после твоих изменений. Ну и, таким образом, у тебя в коде начнут появляться ошибки, про которые ты даже знать не будешь, которых изначально там не было.

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

А вот эти вложенные “умные” однострочники - это называется
го
вно
код
.

Ты бы книжки уже начал бы читать какие-нибудь. В них всё это расписано вдоль и поперёк.


tags: inline code



Отредактировано py.user.next (Сен. 10, 2022 01:14:35)

Офлайн

#10 Сен. 10, 2022 07:36:40

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

парсинг авито

Rodegast
Никогда не используй
лямбды генераторы списков матчинг фстринги и декораторы
… далеко можно зайти так. да?



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 10, 2022 07:54:30)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version