I'm trying to scrape the text of a specific 'h2', but I keep getting this error when i use .text or .get_text. what should i do?
import requests
from bs4 import BeautifulSoup
url = 'https://www.ocupacoes.com.br/cbo-mte/251205-economista'
reqs = requests.get(url)
soup = BeautifulSoup(reqs.text, 'lxml')
print(soup.find_all('h2')[1])
and i got this : <h2>Descrição Sumária</h2>
but i would like to receive this "Descrição Sumária
Analisam o ambiente econômico; elaboram e executam projetos de pesquisa econômica, de mercado e de viabilidade econômica, entre outros. participam do planejamento estratégico e de curto prazo e avaliam políticas de impacto coletivo para o governo, ong e outras organizações. gerem programação econômico-financeira; atuam nos mercados internos e externos; examinam finanças empresariais. podem exercer mediação, perícia e arbitragem."
and when i use text or get.text i get this AttributeError: 'NoneType' object has no attribute 'text' What should i do?
CodePudding user response:
You could use next_sibling
.
text = soup.find_all('h2')[1].next_sibling.string
print('\n'.join(text[idx:idx 80] for idx in range(0, len(text), 80)))
Analisam o ambiente econômico; elaboram e executam projetos de pesquisa econômi
ca, demercado e de viabilidade econômica, entre outros. participam do planejamen
to estratégicoe de curto prazo e avaliam políticas de impacto coletivo para o go
verno, ong e outrasorganizações. gerem programação econômico-financeira; atuam n
os mercados internos eexternos; examinam finanças empresariais. podem exercer me
diação, perícia e arbitragem.
Note, I've used a list comprehension to print the text solely to limit it to 80 characters to make it more readable.
This means some words will be split
CodePudding user response:
The solution from norie working but at the slightest change may break due to hardcoded for in range()
You may want something like this (example in the online IDE):
text = soup.select_one('#container-principal > section > h2:nth-child(11)').next_sibling.strip()
print(text)
'''
Analisam o ambiente econômico; elaboram e executam projetos de pesquisa econômica, demercado e de viabilidade econômica, entre outros. participam do planejamento estratégicoe de curto prazo e avaliam políticas de impacto coletivo para o governo, ong e outrasorganizações. gerem programação econômico-financeira; atuam nos mercados internos eexternos; examinam finanças empresariais. podem exercer mediação, perícia e arbitragem.
'''