#python #web-scraping #beautifulsoup
#python #соскабливание полотна #прекрасный суп
Вопрос:
Результат этого :
soup.find('span', {'class':'js-date-picker btn--secondary btn--secondary--no-spacing'})
<span class="js-date-picker btn--secondary btn--secondary--no-spacing" data-clear="/h/?type=lnamp;amp;search=ethereumamp;amp;lang=enamp;amp;searchheadlines=1" data-date='{"sel":false,"latest":1599889680,"now":1599897600}' data-href="/h/?type=lnamp;amp;search=ethereumamp;amp;lang=enamp;amp;searchheadlines=1amp;amp;d=" href="javascript://">
<span class="btn--secondary__icon"><i class="far fa-calendar-alt"></i></span>
<span class="btn--secondary__label">
<span class="dtctxt"><span class="d">12 Sep</span><span class="t"> 06:48</span></span></span>
</span>
Теперь я хочу извлечь {"sel":false,"latest":1599889680,"now":1599897600}
из этого текста
Как я могу это сделать?
Ответ №1:
Попробуйте это:
import ast
from bs4 import BeautifulSoup
html = """
<span class="js-date-picker btn--secondary btn--secondary--no-spacing" data-clear="/h/?type=lnamp;amp;search=ethereumamp;amp;lang=enamp;amp;searchheadlines=1" data-date='{"sel":false,"latest":1599889680,"now":1599897600}' data-href="/h/?type=lnamp;amp;search=ethereumamp;amp;lang=enamp;amp;searchheadlines=1amp;amp;d=" href="javascript://"></span>
<span class="btn--secondary__icon"><i class="far fa-calendar-alt"></i></span>
<span class="btn--secondary__label">
<span class="dtctxt"><span class="d">12 Sep</span><span class="t"> 06:48</span></span></span>
</span>
"""
soup = BeautifulSoup(html, 'html.parser').find("span", {"class": "js-date-picker btn--secondary btn--secondary--no-spacing"})
result = soup.get("data-date")
print(result)
Вывод:
{"sel":false,"latest":1599889680,"now":1599897600}
Если вам нужно, вы можете преобразовать результат в dict
объект, например:
data_date = ast.literal_eval(result.replace("false", "False"))
print(data_date['now'])
Вывод: 1599897600
Комментарии:
1. Спасибо за предложение, я использовал это, и оно также работает :
json.loads(soup.find('span', {'class':'js-date-picker btn--secondary btn--secondary--no-spacing'}).get("data-date"))