Ошибка BeautifulSoup: индекс списка вне диапазона - PullRequest
0 голосов
/ 25 апреля 2018

Вот мой журнал ошибок

>>python crawler.py
Traceback (most recent call last):
  File "crawler.py", line 163, in <module>
    crawler.run()
  File "crawler.py", line 90, in run
    for index, url in enumerate(self.parse_menu(self.request(self.start_url))):
  File "crawler.py", line 116, in parse_menu
    menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
**IndexError: list index out of range**

Вот часть моего кода

def parse_menu(self, response):
    soup = BeautifulSoup(response.content, "html.parser")
    menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
    for li in menu_tag.find_all("li"):
        url = li.a.get("href")
        if not url.startswith("http"):
            url = "".join([self.domain, url])  
        yield url

1 Ответ

0 голосов
/ 25 апреля 2018

Ниже приведен фрагмент кода, который я считаю работающим. Я думаю, что веб-сайт, к которому вы пытаетесь получить доступ к сканерам банов, должен маскировать ваши скрипты, предоставляя заголовки браузера вместе с вашим запросом.

from bs4 import BeautifulSoup
from lxml import html
import requests
url = "https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000"
headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'}
page = requests.get(url, headers = headers)
soup = BeautifulSoup(page.content, 'html.parser')
menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...