Не запускается парсер avito

Wealthunter

Новичок
Пользователь
Июн 13, 2024
3
0
1
Помогите пожалуйста новичку в парсинге. Хочу, чтобы при вводе ключевого слова программа выводила ссылки на страницы сайта avito, которые будут являться результатами поиска. Украл Составил и адаптировал такой код:

from bs4 import BeautifulSoup
import requests

keyword = input()

url = 'https://www.avito.ru/moskva_i_mo?q=' + keyword
request = requests.get(url)
bs = BeautifulSoup(request.text, 'html.parser')

all_links = bs.find_all('a', class_='noVisited-MpiGq')

for link in all_links:
print('https://www.avito.ru' + link['href'])

Но почему-то при запуске кода и вводе инпута программа выдает мне пустую строку и текст "Process finished with exit code 0", а результат с ссылками отсутсвует.
Работаю в Pycharm. Запустить код в cmd тоже не получается.
Пожалуйста подскажите, как сделать так, чтобы в результате программа выводила список ссылок?
Заранее благодарю!
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 622
469
83
Но почему-то при запуске кода и вводе инпута программа выдает мне пустую строку и текст "Process finished with exit code 0"
потому что ничего не найдено и поэтому пустая строка, а Process finished with exit code 0 значит что процесс завершился без ошибок
класс поиска у вас старныый, может в нем дело
и код вставляйте как код, соблюдая отступы, подробнее - https://itfy.org/threads/kak-ne-nado-zadavat-voprosy.3450/#post-13566
 
  • Мне нравится
Реакции: Wealthunter

Wealthunter

Новичок
Пользователь
Июн 13, 2024
3
0
1
и код вставляйте как код, соблюдая отступы, подробнее - https://itfy.org/threads/kak-ne-nado-zadavat-voprosy.3450/#post-13566

Python:
from bs4 import BeautifulSoup
import requests

keyword = input()

url = 'https://www.avito.ru/moskva_i_mo?q=' + keyword
request = requests.get(url)
bs = BeautifulSoup(request.text, 'html.parser')

all_links = bs.find_all('a', class_='styles-module-root-YeOVk styles-module-root_noVisited-MpiGq')

for link in all_links:
    print('https://www.avito.ru' + link['href'])

класс поиска у вас старныый, может в нем дело

Проведите пожалуйста ликбез, как правильно выбрать класс?
Например по ссылке https://www.avito.ru/moskva_i_mo?q=инвестиции я хочу вычленить класс из элемента:
HTML:
<a itemprop="url" rel="noopener" target="_blank" title="Инвестиции оплата каждый день высокий доход в Москве" data-marker="item-title" href="/moskva/gotoviy_biznes/investitsii_oplata_kazhdyy_den_vysokiy_dohod_2089826844" class="styles-module-root-YeOVk styles-module-root_noVisited-MpiGq"><h3 itemprop="name" class="styles-module-root-GKtmM styles-module-root-YczkZ styles-module-size_l-z_5_p styles-module-size_l_compensated-_l_w8 styles-module-size_l-YMQUP styles-module-ellipsis-a2Uq1 styles-module-weight_bold-jDthB stylesMarningNormal-module-root-S7NIr stylesMarningNormal-module-header-l-iFKq3" style="--module-max-lines-size:2">Инвестиции оплата каждый день высокий доход</h3></a>

Заранее благодарю!
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 622
469
83
Python:
from bs4 import BeautifulSoup
import requests

keyword = input()

url = 'https://www.avito.ru/moskva_i_mo?q=' + keyword
request = requests.get(url)
bs = BeautifulSoup(request.text, 'html.parser')

all_links = bs.find_all('a', class_='styles-module-root-YeOVk styles-module-root_noVisited-MpiGq')

for link in all_links:
    print('https://www.avito.ru' + link['href'])



Проведите пожалуйста ликбез, как правильно выбрать класс?
Например по ссылке https://www.avito.ru/moskva_i_mo?q=инвестиции я хочу вычленить класс из элемента:
HTML:
<a itemprop="url" rel="noopener" target="_blank" title="Инвестиции оплата каждый день высокий доход в Москве" data-marker="item-title" href="/moskva/gotoviy_biznes/investitsii_oplata_kazhdyy_den_vysokiy_dohod_2089826844" class="styles-module-root-YeOVk styles-module-root_noVisited-MpiGq"><h3 itemprop="name" class="styles-module-root-GKtmM styles-module-root-YczkZ styles-module-size_l-z_5_p styles-module-size_l_compensated-_l_w8 styles-module-size_l-YMQUP styles-module-ellipsis-a2Uq1 styles-module-weight_bold-jDthB stylesMarningNormal-module-root-S7NIr stylesMarningNormal-module-header-l-iFKq3" style="--module-max-lines-size:2">Инвестиции оплата каждый день высокий доход</h3></a>

Заранее благодарю!
а что вы получить хотите? просто ссылки?
можно так
Python:
from bs4 import BeautifulSoup
import requests

keyword = input()

url = 'https://www.avito.ru/moskva_i_mo?q=' + keyword
request = requests.get(url)
bs = BeautifulSoup(request.text, 'html.parser')

all_links = bs.find_all('a')

for link in all_links:
    print('https://www.avito.ru' + link['href'])
 

Wealthunter

Новичок
Пользователь
Июн 13, 2024
3
0
1
а что вы получить хотите? просто ссылки?
можно так
Python:
from bs4 import BeautifulSoup
import requests

keyword = input()

url = 'https://www.avito.ru/moskva_i_mo?q=' + keyword
request = requests.get(url)
bs = BeautifulSoup(request.text, 'html.parser')

all_links = bs.find_all('a')

for link in all_links:
    print('https://www.avito.ru' + link['href'])
В Вашем коде в результате мне выводит следующее:
https://www.avito.ruhttps://support.avito.ru/request/720
https://www.avito.ruhttp://yandex.ru/internet
Причем при любом инпуте.

Я в результате хочу получить ссылки на объявления сайта Авито хотя бы с первой страницы поиска по ключевому слову. Например, если keyword = "инвестиции", то мы переходим по ссылке https://www.avito.ru/moskva_i_mo?q=инвестиции и в итоге хотим получить список ссылок, первые из которых:

https://www.avito.ru/moskva/gotoviy_biznes/investitsii_oplata_kazhdyy_den_vysokiy_dohod_2089826844
https://www.avito.ru/moskva/gotoviy_biznes/investitsii_oplata_kazhdyy_den_vysokiy_dohod_2089826844
https://www.avito.ru/moskva/gotoviy_biznes/investitsii_v_magaziny_obuvi_i_strit_fud_3877453518
и т. д.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 622
469
83
В Вашем коде в результате мне выводит следующее:
https://www.avito.ruhttps://support.avito.ru/request/720
https://www.avito.ruhttp://yandex.ru/internet
Причем при любом инпуте.

Я в результате хочу получить ссылки на объявления сайта Авито хотя бы с первой страницы поиска по ключевому слову. Например, если keyword = "инвестиции", то мы переходим по ссылке https://www.avito.ru/moskva_i_mo?q=инвестиции и в итоге хотим получить список ссылок, первые из которых:

https://www.avito.ru/moskva/gotoviy_biznes/investitsii_oplata_kazhdyy_den_vysokiy_dohod_2089826844
https://www.avito.ru/moskva/gotoviy_biznes/investitsii_oplata_kazhdyy_den_vysokiy_dohod_2089826844
https://www.avito.ru/moskva/gotoviy_biznes/investitsii_v_magaziny_obuvi_i_strit_fud_3877453518
и т. д.
это защита авито от ботов, а код работает, можете проверить, скопировать элемент из браузера в строку и распарсить

Python:
from bs4 import BeautifulSoup
import requests

# keyword = input()

# url = 'https://www.avito.ru/moskva_i_mo?q=' + keyword
# request = requests.get(url)

# bs = BeautifulSoup(request.text, 'html.parser')

url_text = '<a itemprop="url" rel="noopener" target="_blank" title="Инвестиционый брокер по недвиижимости в Москве" ' \
           'data-marker="item-title" ' \
           'href="/moskva/predlozheniya_uslug/investitsionyy_broker_po_nedviizhimosti_3970684646" ' \
           'class="styles-module-root-YeOVk styles-module-root_noVisited-MpiGq"><h3 itemprop="name" ' \
           'class="styles-module-root-GKtmM styles-module-root-YczkZ styles-module-size_l-z_5_p ' \
           'styles-module-size_l_compensated-_l_w8 styles-module-size_l-YMQUP styles-module-ellipsis-a2Uq1 ' \
           'styles-module-weight_bold-jDthB stylesMarningNormal-module-root-S7NIr ' \
           'stylesMarningNormal-module-header-l-iFKq3" style="--module-max-lines-size:2">Инвестиционый брокер по ' \
           'недвиижимости</h3></a> '
bs = BeautifulSoup(url_text, 'html.parser')

all_links = bs.find_all('a')

for link in all_links:
    print('https://www.avito.ru' + link['href'])
 

Форум IT Специалистов