Dora
Dora

Reputation: 19

locating child element by BeautifulSoup

I am new to BeautifulSoup and I am praticing with little tasks. Here I try to get the "previous" link in this site. The html is here

My code is

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')

But it shows NoneType.. I have read some posts about the child elements in html, and I tried some different things. But it still does not work.. Thank you for your help in advance.

Upvotes: 1

Views: 148

Answers (2)

Logan Anderson
Logan Anderson

Reputation: 581

Tou could use a CSS Selector instead.

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)

if you want just the href change

result = soup.select('.comicNav a[rel~="prev"]')[0]["href"]

Upvotes: 1

KunduK
KunduK

Reputation: 33384

To get prev link.find ul tag and then find a tag. Try below code.

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)

Output:

/2254/

Upvotes: 0

Related Questions