Hi Graeme,

> I need to find the value of the class attribute, which could be
> "marine-card" or "marine-card warning" but
> print(section.contents) starts with the <h2 line, and
> print(section.contents[0] prints only a blank line.

I think you need to know about a Tag's attributes.
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#Tag.attrs

My knowledge of Python is out of date, and I've not used BeautifulSoup
before, but here's some working code.

    $ cat parse
    #! /usr/bin/python3

    import bs4
    import requests
    import warnings

    def main():
        warnings.simplefilter('ignore', category=bs4.GuessedAtParserWarning)
        url = 
'https://weather.metoffice.gov.uk/specialist-forecasts/coast-and-sea/inshore-waters-forecast'
        resp = requests.get(url)
        html = bs4.BeautifulSoup(resp.content)

        sect = html('section', id='inshore-waters-7', limit=2)
        assert len(sect) == 1, sect
        sect = sect[0]

        cls = sect['class']
        print(sorted(cls))

    main()
    $
    $ ./parse
    ['marine-card', 'warning']
    $

-- 
Cheers, Ralph.

-- 
  Next meeting: Online, Jitsi, Tuesday, 2026-06-02 20:00
  Check to whom you are replying
  Meetings, mailing list, IRC, ...  https://dorset.lug.org.uk
  New thread, don't hijack:  mailto:[email protected]

Reply via email to