поиск дочернего элемента BeautifulSoup - PullRequest
1 голос
/ 15 января 2020

Я новичок в BeautifulSoup, и у меня мало задач. Здесь я пытаюсь получить «предыдущую» ссылку на этом сайте . html здесь здесь

Мой код:

import requests, bs4
from bs4 import BeautifulSoup
url = 'https://www.xkcd.com/'

page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')
result = soup.find('div', id="comic")
url2 = result.find('ul', class_='comicNav').find('a', rel='prev').find('href')

Но он показывает NoneType .. Я прочитал несколько постов о дочерних элементах в html, и я пробовал разные вещи. Но все равно не получается .. Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 15 января 2020

Вместо этого вы можете использовать CSS Селектор.

import requests, bs4
from bs4 import BeautifulSoup
url = 'https://www.xkcd.com/'

page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')
result = soup.select('.comicNav a[rel~="prev"]')[0]
print(result)

, если вы хотите просто изменить href

result = soup.select('.comicNav a[rel~="prev"]')[0]["href"]
0 голосов
/ 15 января 2020

Чтобы получить prev link.find ul tag, а затем найти тег. Попробуйте код ниже.

import requests, bs4
from bs4 import BeautifulSoup
url = 'https://www.xkcd.com/'

page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')
url2 = soup.find('ul', class_='comicNav').find('a',rel='prev')['href']
print(url2)

Вывод :

/2254/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...