Как извлечь атрибут в этом классе audio? - PullRequest
1 голос
/ 07 августа 2020

Я пытаюсь извлечь содержимое тега scr в audio, который находится внутри класса BlocArticle. Например, один из таких экземпляров -

<audio id="229648fra2" src="/dictionnaires-prononciation/francais/tts/229648fra2" type="audio/mp3"></audio>

Я пробовал

import requests
session = requests.Session()
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
r = session.get('https://www.larousse.fr/dictionnaires/francais-anglais/aimer/1925', headers = headers)
soup = BeautifulSoup(r.content, 'html.parser')

temp = [tag.attrs['src'] for tag in soup.select('div.BlocArticle audio')]

К сожалению, мой код возвращает []. Не могли бы вы изменить мой код для достижения моей цели?

1 Ответ

1 голос
/ 07 августа 2020

Вы можете использовать селектор css для этого, [class*='ZoneExpression'] означает, что он будет соответствовать как "ZoneExpression", так и "ZoneExpression1" (".*ZoneExpression.*"):

import requests
session = requests.Session()
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
r = session.get('https://www.larousse.fr/dictionnaires/francais-anglais/aimer/1925', headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')

r = [sub_tag.select_one("audio").get("src") for tag in soup.select(".itemZONESEM") for sub_tag in tag.select("[class*='ZoneExpression']")]
print(r)

Что дало мне:

['/dictionnaires-prononciation/francais/tts/229646fra2', '/dictionnaires-prononciation/francais/tts/83614fra2', '/dictionnaires-prononciation/francais/tts/229647fra2', '/dictionnaires-prononciation/francais/tts/229648fra2', '/dictionnaires-prononciation/francais/tts/229649fra2', '/dictionnaires-prononciation/francais/tts/229650fra2', '/dictionnaires-prononciation/francais/tts/229651fra2', '/dictionnaires-prononciation/francais/tts/229652fra2', '/dictionnaires-prononciation/francais/tts/229653fra2', '/dictionnaires-prononciation/francais/tts/229654fra2', '/dictionnaires-prononciation/francais/tts/229655fra2', '/dictionnaires-prononciation/francais/tts/2234fra2', '/dictionnaires-prononciation/francais/tts/229657fra2', '/dictionnaires-prononciation/francais/tts/229658fra2', '/dictionnaires-prononciation/francais/tts/229659fra2', '/dictionnaires-prononciation/francais/tts/229660fra2']

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