Кажется, проблема for i in soup.find
. Если вы ищете только один элемент, нет необходимости повторять этот элемент, и если вы ищете несколько элементов, find_all
вместо find
, вероятно, будет соответствовать цели.
Конкретнее, вот два подхода. Помимо того, что было упомянуто выше, обратите внимание, что i
- это div
, который содержит желаемый a
в качестве дочернего элемента, поэтому нам необходим дополнительный шаг для его достижения (это может быть более прямым с помощью xpath).
import requests
from bs4 import BeautifulSoup
url = "http://python.beispiel.programmierenlernen.io/index.php"
doc = requests.get(url).content
soup = BeautifulSoup(doc, "html.parser")
for i in soup.find_all("div", {"class": "navigation"}):
print(i.find("a", href=True)["href"])
print(soup.find("div", {"class": "navigation"})
.find("a", href=True)["href"])
Вывод:
index.php?page=2
index.php?page=2