@Tyklon

Почему выдает ошибку при парсинге «TypeError: find() takes no keyword arguments»? Как исправить это?

import requests
from bs4 import BeautifulSoup
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0"}
url = "https://hamptonvolgograd.ru/nomera/"
response = requests.get(url, headers = headers)
soup = BeautifulSoup(response.text, "lxml")
roomlist = soup.find("ul", id="roomsList")
for hostel in roomlist:
title = hostel.find("span", class_ = "h1")
print(title.text)
  • Вопрос задан
  • 1805 просмотров
Решения вопроса 1
@AVKor
Ответ с учётом вопроса о цене. Можно так.
import requests
from bs4 import BeautifulSoup

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0"}
URL = "https://hamptonvolgograd.ru/nomera/"
response = requests.get(URL, headers = headers)
soup = BeautifulSoup(response.text, "lxml")
roomlist = soup.find("ul", id="roomsList").select("li > span > div")
for hostel in roomlist:
    title = hostel.find("span", class_ = "h1").text.strip()
    price = hostel.find("ul", class_ = "roomPrice").find("li").text.strip()
    print(title)
    print(price)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
roomlist у тебя <class 'bs4.element.Tag'>
Читай доки

Измененный пример

import requests
from bs4 import BeautifulSoup
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0"}
url = "https://hamptonvolgograd.ru/nomera/"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
roomlist = soup.findAll("span", class_="h1")

for hostel in roomlist:
    print(hostel.text.strip())

вывод
Номер с двуспальной кроватью (номер первой категории)
Номер с двумя кроватями (номер первой категории)
Номер с двуспальной кроватью и диваном-кроватью (Джуниор сюит)
Номер для людей с ограниченными возможностями (номер первой категории)

Ответ написан
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Что именно непонятно?
TypeError: find() takes no keyword arguments

Переводится как:
TypeError: find() не принимает именованные аргументы

Например в:
roomlist = soup.find("ul", id="roomsList")
id - как-раз является таковым. То есть, чисто по ошибке это должно выглядеть как-то так:
roomlist = soup.find("ul", "roomsList")
Однако, насколько это верно с точки зрения синтаксиса я не знаю. Узнавайте сами:
  1. в документации
  2. в исходниках (любая нормальная IDE позволяет перейти к нужной функции/классу из либы в пары кликов)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы