Найти - Пользователи
Полная версия: парсинг авито
Начало » Python для новичков » парсинг авито
1 2 3
Rodegast
> … далеко можно зайти так. да?

Давай почитаем феншуй дзен. Ведь там такое написано… Да?
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.

Читаемость имеет значение.
Никто не ожидает присваивание посреди выражения и если оно всё таки происходит, то место в котором произошло присваивание просто теряется. По этому использование оператора := запутывает код и ухудшает его читаемость. Поверь если ты напишешь лишнюю строчку с нормальным присваиванием, то руки у тебя не отвалятся, а разобраться в коде будет намного проще. Но похоже что ты о таких “мелочах” даже не задумываешься…

> У меня он вообще не срабатывает.

Он только внутри выражений работает.
AD0DE412
ну это в стандарте
уже
да?
тогда о чем речь?
чего кто то не ждет?

хотя … а не хочу я с вами эээ ругаться (не это слишком сильно) препираться
давайте сойдемся на том что можно …
но можно и учитывать читаемость для привыкших к более консервативному написанию кода ок )
Rodegast
> ну это в стандарте

И что? После того как Гвидо доканали в стандарт льётся всякое разное как из рога изобилия… Но это не значит что всем этим нужно бездумно пользоваться.
xam1816
Rodegast
Никогда не используй оператор := Это не по феншую.
да, я уже понял что это не по феншую, стал запускать код на ноуте и заругался на эту строчку
py.user.next
Ты думаешь, все бросятся обновлять эту сеть?
как раз подумал, что не стану обновлять питон из-за этой строчки, просто что-то лень.
py.user.next
Rodegast
> У меня он вообще не срабатывает.
Он только внутри выражений работает.
Не, он работает везде. Просто он появился в версии 3.8, а у меня версия меньше.

Так-то у меня есть альфа-версия последняя
Python 3.10.0a0
  
>>> if x := 1:
...     print(x)
... 
1
>>> if x := 0:
...     print(x)
... 
>>> 
Но это не значит, что я тут же бросаюсь устанавливать последний релиз повсюду, когда он там появляется. Чтобы поставить самый новый питон, надо поставить новую операционную систему, в которой есть репозитории с новым питоном и все новые библиотеки, которые ему там нужны, чтобы фурычить полноценно. Чтобы поставить новую операционную систему, надо купить новый компьютер, в котором хватает оперативной памяти для этой новой операционной системы, иначе всё будет работать в целом, но будет просто тормозить через каждые три секунды. И таких компьютеров у меня не одна штука. Естественно, я не буду весь свой парк обновлять ради того, чтобы какие-то питоновцы могли порадоваться тому, как я их новой фичей пользуюсь и как она классно работает. Причём нужность этой фичи в реальных проектах ещё под большим вопросом. Это просто свистелки и перделки, синтаксический сахар.
Rodegast
> Не, он работает везде. Просто он появился в версии 3.8, а у меня версия меньше.

 Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a := 5
File "<stdin>", line 1
a := 5
^
SyntaxError: invalid syntax
>>> s = (a := 5)
>>>
xam1816
py.user.next
Твой-то я запускал, ничего не выводит у меня, потому что нет там в ответе классов этих.
я свой код на линуксе запускаю, срабатывает без проблем
 
авто
https://www.avito.ru/krasnodar/predlozheniya_uslug/arenda_avto_bez_zaloga_724834988
https://www.avito.ru/pyatigorskiy/knigi_i_zhurnaly/avtomobili_uchet_armeniya_2521072265
https://www.avito.ru/sankt-peterburg/predlozheniya_uslug/arenda_avto_avto_v_prokat_1276365417
https://www.avito.ru/moskva/predlozheniya_uslug/arenda_avtomobili_pod_taksi._bez_zaloga_2262204672
https://www.avito.ru/sankt-peterburg/predlozheniya_uslug/vykup_avto_srochnyy_vykup_avtomobiley_2174777139...

а с ноута на винде, этот код дает страницу, что ваш ip подозрительный и остальное бла, бла, бла
нужно с заголовками наверное играться, чтоб не блокировало
AD0DE412
используй прокси их как *.* чего
только они в основном они не https

ps и еще curl to python


py.user.next
xam1816
я свой код на линуксе запускаю, срабатывает без проблем
xam1816
а с ноута на винде, этот код дает страницу, что ваш ip подозрительный и остальное бла, бла, бла
Это твой код с print'ом
  
>>> from bs4 import BeautifulSoup
>>> import requests
>>> 
>>> def f():
...     product = input()
...     url = "https://www.avito.ru/rossiya?q=" + product
...     request = requests.get(url)
...     print(request.text)
...     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()
авто
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="HandheldFriendly" content="True">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
    <title>Доступ ограничен: проблема с IP</title>
    <style>
    ...
Видимо, она детектирует, браузер это просматривает или нет. Если не браузер, то отказывает в доступе вот таким образом. Не факт, что по IP.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB