Top.Mail.Ru
Ответы

Я создавал парсер сайтов на питоне и у меня возникла ошибка.

Писал простой парсер который просматривал авито и у меня возникла ошибка

1
 IndexError: list index out of range 



при таком коде

1234567891011121314151617181920212223242526272829303132333435363738
 from bs4 import BeautifulSoup 
import requests 
from requests import get 
import time 
import random 
 
url = 'ttps://www.avito.ru/lipetsk/kvartiry/sdam/na_dlitelnyy_srok-ASgBAgICAkSSA8gQ8AeQUg?cd=1&rn=25934&p=' 
houses = [] 
count = 1 
while count <= 5: 
    url = 'ttps://www.avito.ru/lipetsk/kvartiry/sdam/na_dlitelnyy_srok-ASgBAgICAkSSA8gQ8AeQUg?cd=1&rn=25934&p=' + str(count) 
    print(url) 
    response = get(url) 
    html_soup = BeautifulSoup(response.text, 'html.parser') 
 
    house_data = html_soup.find_all('div', class_="item_line") 
    if house_data != []: 
        houses.extend(house_data) 
        value = random.random() 
        scaled_value = 1 + (value * (9 - 5)) 
        print(scaled_value) 
        time.sleep(scaled_value) 
    else: 
        print('empty') 
        break 
    count += 1 
 
print(len(houses)) 
print(houses[0]) 
print() 
n = int(len(houses)) - 1 
count = 0 
while count <= 5:  # count <= n 
    info = houses[int(count)] 
    price = info.find('span', {"class": "snippet-price"}).text 
    title = info.find('a', {"class": "snippet-link"}).text 
    print(title, ' ', price) 
    count += 1 
По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект

Задержки надо вставлять, чтобы имитировать браузер:

12345678910111213141516171819202122232425262728293031323334
 from bs4 import BeautifulSoup 
import requests 
import time 
import random 
 
base_url = 'h ttps://www.avito.ru/lipetsk/kvartiry/sdam/na_dlitelnyy_srok-ASgBAgICAkSSA8gQ8AeQUg?cd=1&rn=25934&p=' 
houses = [] 
count = 1 
while count <= 5: 
    url = base_url + str(count) 
    print(url) 
    response = requests.get(url) 
    html_soup = BeautifulSoup(response.text, 'html.parser') 
 
    house_data = html_soup.find_all('div', class_="item_line") 
    if house_data != []: 
        houses.extend(house_data) 
        value = random.random() 
        scaled_value = 1 + (value * (9 - 5)) 
        print(scaled_value) 
        time.sleep(scaled_value) 
    else: 
        print('No data on this page') 
        break 
    count += 1 
 
print(len(houses)) 
print() 
 
for info in houses: 
    price = info.find('span', {"class": "snippet-price"}).text 
    title = info.find('a', {"class": "snippet-link"}).text 
    print(title, ' ', price) 
 
Аватар пользователя
Искусственный Интеллект

Обращаешься по несуществующему индексу