-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscraper.py
41 lines (32 loc) · 1.11 KB
/
scraper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import re
import requests
from bs4 import BeautifulSoup
def parse(html) -> tuple:
"""
Retorna título e descrição formatada da oferta de emprego de uma página Gupy.
A função interna é útil para obter texto de bloco HTML respeitando novos parágrafos e itens de lista.
"""
def refine(piece):
piece = piece.replace('<p', '\n<p').replace('<li', '\n- <li')
return re.sub(r"<(.*?)>", '', piece)
soup = BeautifulSoup(html, "html.parser")
title = soup.find(id='h1').text
target = (
'Descrição da vaga', 'Responsabilidades e atribuições',
'Requisitos e qualificações', 'Diferenciais'
)
out = []
for outter_div in soup.section.contents:
if outter_div.h2.text in target:
out.append(f"""#### {outter_div.h2.text}\n{refine(str(outter_div.div))}\n""")
return title.strip(), '\n'.join(out)
def get_page(url: str) -> str:
"""
Faz o download da página da vaga de emprego.
"""
response = requests.get(url)
if response.status_code == 200:
html_content = response.text.replace('\u00A0', ' ')
else:
raise RuntimeError(f"Error downloading webpage: {response.status_code}")
return html_content