Проблема с парсером (IndexError: список индексов вне диапазона) - PullRequest
0 голосов
/ 05 января 2020

Пожалуйста, помогите мне с этой ошибкой:

Traceback (most recent call last):
  File "D:/Python/parser.py", line 14, in <module>
    for i in title[0].text:
IndexError: list index out of range  

Код:

import requests
from bs4 import BeautifulSoup as BS

max_page = 6

pages = []

for x in range(1, max_page + 1):
    pages.append( requests.get("https://stopgame.ru/review/new/stopchoice/p" +  str(x) )  )
for r in  pages:
    html = BS(r.content, "html.parser")

    for el in html.select(".lent-block"):
        title = el.select(".lent-block > a")
        for i in title[0].text:
         title.text[0](title)

1 Ответ

0 голосов
/ 05 января 2020

Я предполагаю по имени вашей переменной, что вы хотите получить название каждой игры. Если это так, вы можете нацелиться на .lent-title > a напрямую. .lent-block > a дает вам пустой список, потому что > указывает непосредственного потомка, а не потомка. lent-block a даст вам всех потомков.

import requests
from bs4 import BeautifulSoup

max_page = 6

for i in range(max_page):
    page = requests.get(f"https://stopgame.ru/review/new/stopchoice/p{i + 1}")
    html = BeautifulSoup(page.content, "html.parser")

    for el in html.select(".lent-title > a"):
        print(el.text)

Вывод:

Disco Elysium: Обзор
Dragon Quest XI S: Echoes of an Elusive Age - Definitive Edition: Обзор
Outer Wilds: Обзор
Baba Is You: Обзор
Apex Legends: Обзор
Mario & Luigi: Bowser's Inside Story + Bowser Jr.'s Journey: Обзор
Protocol: Обзор
Dead Cells: Обзор
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...