Как прочитать содержимое заголовка веб-страницы с помощью Django и запросов?

Я создал поисковую систему для веб-страниц в Django и хотел бы выполнять запросы к этим страницам, чтобы узнать значение их различных заголовков X-Frame-Options. Поэтому я написал следующий код:

def search(request):
            . . .
            final_result = []
            for page_num in range(1, max_pages_to_scrap+1):
                url = "https://www.ask.com/web?q=" + search + "&qo=pagination&page=" + str(page_num)
                res = requests.get(url)
                soup = bs(res.text, 'lxml')
                result_listings = soup.find_all('div', {'class': 'PartialSearchResults-item'})
    
                for result in result_listings:
                    result_title = result.find(class_='PartialSearchResults-item-title').text
                    result_url = result.find('a').get('href')
                    result_desc = result.find(class_='PartialSearchResults-item-abstract').text
                    final_result.append((result_title, result_url, result_desc))
    
                    for header in final_result[1]: #the error is generated here
                     response = requests.get(header)
                    if response['X-Frame-Options'] in ["DENY", "SAMEORIGIN"]:
                        head = True
                        notAccept = bool(head)
                    else:
                        notAccept = bool(False)

Но когда я тестирую, я получаю в терминале следующие ошибки:

Internal Server Error: /search
Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "C:\Python310\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\user\Documents\AAprojects\Whelpsgroups1\searchEngine\search\views.py", line 29, in search
    for header in final_result[1]:
IndexError: list index out of range
[17/Sep/2022 23:28:40] "GET /search?csrfmiddlewaretoken=t57w6QZSzkgsKoNJWXrjotBRdKSNxBBxzfzPnUC6N7kXfs5pMyGWcjQUYcrT13Ds&search=moto HTTP/1.1" 500 88593

Я не понимаю, почему я также надеюсь на поддержку сообщества. Спасибо!

Ошибка связана с тем, что в первой итерации список final_result имеет только один элемент, и путь доступа к нему будет final_result[0], индекс python начинается с 0.

Я думаю, что вы пытаетесь получить доступ к первому элементу кортежа, не так ли? Таким образом, используйте final_result[0][0] или используйте напрямую одну из уже определенных переменных (result_title, result_url, result_desc)

Вернуться на верх