Как получить текст в предварительном теге в python с помощью beautifulsoup4?

#python #web-scraping #beautifulsoup

#python #веб-очистка #beautifulsoup

Вопрос:

Я видел различные примеры на stackoverflow.com но ничто не решает мою проблему, у меня есть следующий сайт: https://meme-api.herokuapp.com/gimme .

На этом сайте есть предварительный тег и текст внутри него, но когда я пытаюсь получить текст внутри предварительного тега, он возвращает только []

код:

 requester = {'User-Agent': 'Mozilla/5.0'}
req=Request("https://meme-api.herokuapp.com/gimme",headers=requester)
u =urlopen(req)
soup = BeautifulSoup(u.read(), features="lxml")
text = soup.find('pre')

print(text)
  

вывод: []

Ответ №1:

URL возвращает JSON so BeautifulSoup , здесь мало что поможет.

Попробуйте это:

 import requests
r = requests.get("https://meme-api.herokuapp.com/gimme").json()
print(r['title'], r['url'])
  

Вывод: Pls send help https://i.redd.it/67scdl09rkn51.jpg

И весь ответ выглядит так:

{'postLink': 'https://redd.it/iu4q6f', 'subreddit': 'memes', 'title': 'Pls send help', 'url': 'https://i.redd.it/67scdl09rkn51.jpg', 'nsfw': False, 'spoiler': False, 'author': 'deinie', 'ups': 9787}

Ответ №2:

поскольку ваш код возвращает выходные данные, поскольку {"postLink":"https://redd.it/iu9v3o","subreddit":"me_irl","title":"me_irl","url":"https://i.redd.it/b4ccrc396mn51.jpg","nsfw":false,"spoiler":false,"author":"TheNBplant","ups":43} здесь нет предварительного тега. таким образом, результат равен none.