Python Индекс Beautifulsoup вне диапазона в цикле - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь с помощью красивого парочка вычеркнуть список ресторанов в городе и их детали (рейтинг, адрес ..)

На первом этапе я получаю список путей ко всем ресторанам и сохраняю их. в переменной mydivs, а затем я пытаюсь l oop в списке и получить информацию о каждом ресторане, это мой код:

for link in mydivs:

    print(link["href"])
    url2=URL = 'https://www.yelp.fr'+link["href"]
    page2 = requests.get(URL)
    soup2 = BeautifulSoup(page2.text)
    if (len(soup2.find_all("span",{"class":"lemon--span__373c0__3997G display--inline__373c0__2q4au border-color--default__373c0__YEvMS"}))!=0):
        address=soup2.find_all("p",{"class":"lemon--p__373c0__3Qnnj text__373c0__2pB8f text-color--normal__373c0__K_MKN text-align--left__373c0__2pnx_ text-weight--bold__373c0__3HYJa"})
        if (len(address[0].findChildren("span" , recursive=False))==0):
            print("dep"+address[0].findChildren("span" , recursive=False)[0].text)
        else:
            print("dep"+address[0].findChildren("a" , recursive=False)[0].text)

    print("adre"+address[1].findChildren("span" , recursive=False)[0].text)
    print("Beki adress"+soup2.find_all("p",{"class":"lemon--p__373c0__3Qnnj text__373c0__2pB8f text-color--normal__373c0__K_MKN text-align--left__373c0__2pnx_"})[0].text)
    print("tel"+soup2.find_all("div",{"class":"lemon--div__373c0__1mboc island__373c0__3fs6U u-padding-t1 u-padding-r1 u-padding-b1 u-padding-l1 border--top__373c0__19Owr border--right__373c0__22AHO border--bottom__373c0__uPbXS border--left__373c0__1SjJs border-color--default__373c0__2oFDT background-color--white__373c0__GVEnp"})[0].findChildren("div" , recursive=False)[0].findChildren("div" , recursive=False)[0].findChildren("div" , recursive=False)[1].findChildren("p" , recursive=False)[1].text)
    print("etoile"+soup2.find_all("span",{"class":"lemon--span__373c0__3997G display--inline__373c0__2q4au border-color--default__373c0__YEvMS"})[0].findChildren("div",recursive=False)[0]["aria-label"])

, и я получаю ошибку:

IndexError: список индексов выходит за пределы диапазона

On line:

print("dep"+address[0].findChildren("a" , recursive=False)[0].text)

Я пытаюсь исправить эту ошибку и получаю ее по всегда первый отпечаток.

1 Ответ

0 голосов
/ 11 февраля 2020

Согласитесь с приведенным выше комментарием. Если на странице нет якорных тегов, она выдаст «исключение индекса вне диапазона».

Вы можете проверить то же самое с помощью приведенного ниже кода: x = soup.findAll ( "a")

 if x is not None and len(x) > 0:  
   section = x[0]

если приведенное выше возвращает None, то на странице нет тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...