Skip to content

Commit d3e31e5

Browse files
committed
live web scraping
1 parent 1335727 commit d3e31e5

5 files changed

+203
-0
lines changed

drafts/20201119_covid_dados.R

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#' Author:
2+
#' Subject:
3+
4+
# library(tidyverse)
5+
library(magrittr)
6+
7+
# Import -----------------------------------------------------------------------
8+
9+
u_base <- "https://data.humdata.org/dataset/e1a91ae0-292d-4434-bc75-bf863d4608ba"
10+
r0 <- httr::GET(u_base)
11+
12+
endpoint <- r0 %>%
13+
xml2::read_html() %>%
14+
xml2::xml_find_first("//a[contains(@href, 'xlsx')]") %>%
15+
xml2::xml_attr("href")
16+
17+
u <- paste0("https://data.humdata.org", endpoint)
18+
r <- httr::GET(u, httr::write_disk("arquivo.xlsx", TRUE))
19+
20+
21+
22+
# Tidy -------------------------------------------------------------------------
23+
24+
# Visualize --------------------------------------------------------------------
25+
26+
# Model ------------------------------------------------------------------------
27+
28+
# Export -----------------------------------------------------------------------
29+
30+
# readr::write_rds(d, "")

drafts/20201119_fundamentus.R

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#' Author:
2+
#' Subject:
3+
4+
# library(tidyverse)
5+
library(magrittr)
6+
7+
# Import -----------------------------------------------------------------------
8+
9+
u_fund <- "https://fundamentus.com.br/detalhes.php"
10+
11+
ua <- httr::add_headers(
12+
"User-Agent" = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.112 Safari/537.36"
13+
)
14+
15+
r <- httr::GET(u_fund, ua)
16+
17+
## acho que nao precisa
18+
# u_opcoes <- "https://fundamentus.com.br/script/cmplte.php"
19+
# r_opcoes <- httr::GET(u_opcoes, ua)
20+
# httr::content(r, "text") %>%
21+
# stringr::str_squish() %>%
22+
# stringr::str_extract("(?<=(tokens)).+")
23+
24+
links <- r %>%
25+
xml2::read_html() %>%
26+
xml2::xml_find_all("//a[contains(@href, 'detalhes.php?')]") %>%
27+
xml2::xml_attr("href") %>%
28+
paste0("https://fundamentus.com.br/", .)
29+
30+
baixar_link <- function(.x, p) {
31+
p()
32+
nome <- stringr::str_extract(.x, "(?<==).*$")
33+
caminho <- paste0("data-raw/fundamentus/", nome, ".html")
34+
httr::GET(.x, ua, httr::write_disk(caminho, TRUE))
35+
}
36+
37+
# progressr::handler_progress()
38+
39+
future::plan(future::multisession)
40+
41+
progressr::with_progress({
42+
p <- progressr::progressor(length(links))
43+
furrr::future_walk(links, baixar_link, p)
44+
})
45+
46+
# arqs <- fs::dir_ls("data-raw/fundamentus")
47+
# head(arqs)
48+
49+
tabelas <- arqs[2] %>%
50+
xml2::read_html() %>%
51+
xml2::xml_find_all("//table") %>%
52+
purrr::map(rvest::html_table) %>%
53+
purrr::map(tibble::as_tibble)
54+
55+
# tibble::tibble(
56+
# x = 1:5,
57+
# tabela = tabelas
58+
# ) %>%
59+
# tidyr::unnest(tabela)
60+
61+
# Tidy -------------------------------------------------------------------------
62+
63+
# Visualize --------------------------------------------------------------------
64+
65+
# Model ------------------------------------------------------------------------
66+
67+
# Export -----------------------------------------------------------------------
68+
69+
# readr::write_rds(d, "")

drafts/20201119_mei.R

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#' Author:
2+
#' Subject:
3+
4+
library(magrittr)
5+
url_home <- "http://www22.receita.fazenda.gov.br/inscricaomei/private/pages/relatorios/opcoesRelatorio.jsf"
6+
res_home <- httr::GET(url_home)
7+
view_state <- . %>%
8+
xml2::read_html() %>%
9+
xml2::xml_find_first("//input[@id='javax.faces.ViewState']") %>%
10+
xml2::xml_attr("value")
11+
bod_mes <- list(
12+
"form" = "form",
13+
"autoScroll" = "",
14+
"javax.faces.ViewState" = view_state(res_home),
15+
"form:j_id14:0:j_id16" = "form:j_id14:0:j_id16",
16+
"tipoRelatorio" = 13
17+
)
18+
res_mes <- httr::POST(url_home, body = bod_mes, encode = "form")
19+
view_state_mes <- view_state(res_mes)
20+
ano_mes <- res_mes %>%
21+
xml2::read_html() %>%
22+
xml2::xml_find_all("//select") %>%
23+
purrr::map(xml2::xml_find_all, "./option") %>%
24+
purrr::map(xml2::xml_attr, "value") %>%
25+
purrr::map(utils::tail, -1) %>%
26+
purrr::set_names("ano", "mes") %>%
27+
purrr::cross_df()
28+
bod_inscritos <- function(ano, mes, view_state) {
29+
list(
30+
"form:relatorioMB_relatorio_ano" = ano,
31+
"form:relatorioMB_relatorio_mes" = mes,
32+
"form:botaoConsultar" = "Consultar",
33+
"form" = "form",
34+
"autoScroll" = "",
35+
"javax.faces.ViewState" = view_state
36+
)
37+
}
38+
get_inscritos <- function(ano, mes, view_state,
39+
path = "~/Downloads/mei") {
40+
fs::dir_create(path)
41+
url_inscritos <- "http://www22.receita.fazenda.gov.br/inscricaomei/private/pages/relatorios/relatorioMesDia.jsf"
42+
httr::POST(
43+
url_inscritos,
44+
body = bod_inscritos(ano, mes, view_state),
45+
httr::write_disk(paste0(path, "/", ano, mes, ".html"), TRUE)
46+
)
47+
}
48+
library(future)
49+
plan(sequential)
50+
furrr::future_walk2(
51+
ano_mes$ano,
52+
ano_mes$mes,
53+
purrr::possibly(get_inscritos, NULL),
54+
view_state_mes,
55+
.progress = TRUE
56+
)
57+
parse_inscritos <- function(file) {
58+
ano <- as.numeric(stringr::str_extract(file, "[0-9]{4}"))
59+
mes <- as.numeric(stringr::str_extract(file, "(?<=[0-9]{4})[0-9]+"))
60+
file %>%
61+
xml2::read_html() %>%
62+
xml2::xml_find_all("//table") %>%
63+
rvest::html_table() %>%
64+
purrr::pluck(1) %>%
65+
dplyr::as_tibble() %>%
66+
janitor::clean_names() %>%
67+
dplyr::mutate(
68+
ano = ano,
69+
mes = mes,
70+
total_optantes = total_optantes %>%
71+
stringr::str_remove_all("\\.") %>%
72+
base::as.numeric()
73+
) %>%
74+
dplyr::relocate(ano, mes)
75+
}
76+
df_inscritos <- "~/Downloads/mei/" %>%
77+
fs::dir_ls() %>%
78+
purrr::map_dfr(purrr::possibly(parse_inscritos, dplyr::tibble()))

drafts/20201119_stf.R

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#' Author:
2+
#' Subject:
3+
4+
# library(tidyverse)
5+
library(magrittr)
6+
7+
api_stf <- "https://jurisprudencia.stf.jus.br/api/search/search"
8+
body <- jsonlite::read_json("payload.json")
9+
teste <- httr::POST(api_stf, body = body, encode = "json",
10+
httr::config(ssl_verifypeer = FALSE))
11+
12+
httr::content(teste)
13+
14+
15+
# Import -----------------------------------------------------------------------
16+
17+
# Tidy -------------------------------------------------------------------------
18+
19+
# Visualize --------------------------------------------------------------------
20+
21+
# Model ------------------------------------------------------------------------
22+
23+
# Export -----------------------------------------------------------------------
24+
25+
# readr::write_rds(d, "")

payload.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"query":{"function_score":{"functions":[{"exp":{"julgamento_data":{"origin":"now","scale":"47450d","offset":"1095d","decay":0.1}}},{"filter":{"term":{"orgao_julgador.keyword":"Tribunal Pleno"}},"weight":1.15},{"filter":{"term":{"is_repercussao_geral":true}},"weight":1.1}],"query":{"bool":{"filter":[{"query_string":{"default_operator":"AND","fields":["acordao_ata.plural^3","documental_acordao_mesmo_sentido_lista_texto.plural","documental_doutrina_texto.plural","documental_indexacao_texto.plural","documental_jurisprudencia_citada_texto.plural","documental_legislacao_citada_texto.plural","documental_observacao_texto.plural","documental_publicacao_lista_texto.plural","documental_tese_tema_texto.plural^3","documental_tese_texto.plural^3","ementa_texto.plural^3","ministro_facet.plural","revisor_processo_nome.plural","orgao_julgador.plural","partes_lista_texto.plural","procedencia_geografica_completo.plural","processo_classe_processual_unificada_extenso.plural","titulo.plural^6","colac_numero.plural","colac_pagina.plural","decisao_texto.plural^2","documental_decisao_mesmo_sentido_lista_texto.plural","processo_precedente_texto.plural","sumula_texto.plural^3","conteudo_texto.plural"],"query":"covid","type":"cross_fields","fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}}],"must":[],"should":[{"query_string":{"default_operator":"AND","fields":["acordao_ata.plural^3","documental_doutrina_texto.plural","documental_indexacao_texto.plural","documental_jurisprudencia_citada_texto.plural","documental_observacao_texto.plural","documental_tese_tema_texto.plural^3","documental_tese_texto.plural^3","ementa_texto.plural^3","titulo.plural^6","decisao_texto.plural^2","sumula_texto.plural^3","conteudo_texto.plural"],"query":"covid","tie_breaker":1,"fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}},{"query_string":{"default_operator":"and","type":"phrase","tie_breaker":1,"phrase_slop":20,"fields":["acordao_ata.plural^3","documental_tese_tema_texto.plural^3","documental_tese_texto.plural^3","ementa_texto.plural^3","decisao_texto.plural^2","conteudo_texto.plural"],"query":"covid","fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}},{"query_string":{"default_operator":"and","type":"phrase","tie_breaker":1,"phrase_slop":5,"fields":["documental_acordao_mesmo_sentido_lista_texto.plural","documental_doutrina_texto.plural","documental_indexacao_texto.plural","documental_jurisprudencia_citada_texto.plural","documental_legislacao_citada_texto.plural","documental_observacao_texto.plural","partes_lista_texto.plural","processo_precedente_texto.plural","documental_decisao_mesmo_sentido_lista_texto.plural"],"query":"covid","fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}},{"query_string":{"default_operator":"and","type":"phrase","phrase_slop":1,"fields":["documental_publicacao_lista_texto.plural","ministro_facet.plural","revisor_processo_nome.plural","orgao_julgador.plural","procedencia_geografica_completo.plural","processo_classe_processual_unificada_extenso.plural","titulo.plural^6","colac_numero.plural","colac_pagina.plural","sumula_texto.plural^3"],"query":"covid","fuzziness":"AUTO:4,7","boost":0,"analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}}]}}}},"_source":["base","_id","id","dg_unique","titulo","ministro_facet","procedencia_geografica_completo","procedencia_geografica_pais_sigla","procedencia_geografica_uf_sigla","procedencia_geografica_uf_extenso","processo_codigo_completo","processo_classe_processual_unificada_extenso","processo_classe_processual_unificada_classe_sigla","processo_classe_processual_unificada_incidente_sigla","processo_numero","julgamento_data","publicacao_data","is_decisao_presidencia","relator_processo_nome","presidente_nome","relator_decisao_nome","acordao_ata","decisao_texto","partes_lista_texto","acompanhamento_processual_url","dje_url","documental_publicacao_lista_texto","documental_decisao_mesmo_sentido_lista_texto","documental_decisao_mesmo_sentido_is_secundario","documental_legislacao_citada_texto","documental_indexacao_texto","documental_observacao_texto","documental_doutrina_texto","externo_seq_objeto_incidente","dg_atualizado_em","informativo_nome","informativo_numero","informativo_url","periodo_inicio_data","periodo_fim_data","conteudo_texto","conteudo_html","processo_lista_texto","sumula_numero","orgao_julgador","is_vinculante","sumula_texto","processo_precedente_texto","processo_precedente_html","processo_classe_processual_unificada_sigla","is_questao_ordem","is_repercussao_geral_admissibilidade","is_repercussao_geral_merito","is_repercussao_geral","is_processo_antigo","is_colac","colac_numero","colac_pagina","revisor_processo_nome","relator_acordao_nome","julgamento_is_sessao_virtual","republicacao_data","ementa_texto","inteiro_teor_url","documental_acordao_mesmo_sentido_lista_texto","documental_acordao_mesmo_sentido_is_secundario","documental_jurisprudencia_citada_texto","documental_assunto_texto","documental_tese_tipo","documental_tese_texto","documental_tese_tema_texto","old_seq_colac","old_seq_repercussao_geral","old_seq_sjur"],"aggs":{"base_agg":{"filters":{"filters":{"acordaos":{"match":{"base":"acordaos"}},"sumulas":{"match":{"base":"sumulas"}},"decisoes":{"match":{"base":"decisoes"}},"informativos":{"match":{"base":"informativos"}}}}},"is_repercussao_geral_agg":{"filters":{"filters":{"true":{"match":{"is_repercussao_geral":true}},"false":{"match":{"is_repercussao_geral":false}}}}},"is_repercussao_geral_admissibilidade_agg":{"filters":{"filters":{"true":{"match":{"is_repercussao_geral_admissibilidade":true}},"false":{"match":{"is_repercussao_geral_admissibilidade":false}}}}},"is_repercussao_geral_merito_agg":{"filters":{"filters":{"true":{"match":{"is_repercussao_geral_merito":true}},"false":{"match":{"is_repercussao_geral_merito":false}}}}},"is_questao_ordem_agg":{"filters":{"filters":{"true":{"match":{"is_questao_ordem":true}},"false":{"match":{"is_questao_ordem":false}}}}},"is_colac_agg":{"filters":{"filters":{"true":{"match":{"is_colac":true}},"false":{"match":{"is_colac":false}}}}},"orgao_julgador_agg":{"aggs":{"orgao_julgador_agg":{"terms":{"field":"orgao_julgador.keyword","size":200,"execution_hint":"map"}}},"filter":{"bool":{"must":[{"term":{"base":"acordaos"}}]}}},"ministro_facet_agg":{"aggs":{"ministro_facet_agg":{"terms":{"field":"ministro_facet.keyword","size":200,"execution_hint":"map"}}},"filter":{"bool":{"must":[{"term":{"base":"acordaos"}}]}}},"processo_classe_processual_unificada_classe_sigla_agg":{"aggs":{"processo_classe_processual_unificada_classe_sigla_agg":{"terms":{"field":"processo_classe_processual_unificada_classe_sigla.keyword","size":200,"execution_hint":"map"}}},"filter":{"bool":{"must":[{"term":{"base":"acordaos"}}]}}},"procedencia_geografica_uf_sigla_agg":{"aggs":{"procedencia_geografica_uf_sigla_agg":{"terms":{"field":"procedencia_geografica_uf_sigla","size":200,"execution_hint":"map"}}},"filter":{"bool":{"must":[{"term":{"base":"acordaos"}}]}}}},"size":10,"from":0,"post_filter":{"bool":{"must":[{"term":{"base":"acordaos"}}],"should":[]}},"sort":[{"_score":"desc"}],"highlight":{"highlight_query":{"bool":{"filter":[{"query_string":{"default_operator":"AND","fields":["acordao_ata.plural^3","documental_acordao_mesmo_sentido_lista_texto.plural","documental_doutrina_texto.plural","documental_indexacao_texto.plural","documental_jurisprudencia_citada_texto.plural","documental_legislacao_citada_texto.plural","documental_observacao_texto.plural","documental_publicacao_lista_texto.plural","documental_tese_tema_texto.plural^3","documental_tese_texto.plural^3","ementa_texto.plural^3","ministro_facet.plural","revisor_processo_nome.plural","orgao_julgador.plural","partes_lista_texto.plural","procedencia_geografica_completo.plural","processo_classe_processual_unificada_extenso.plural","titulo.plural^6","colac_numero.plural","colac_pagina.plural","decisao_texto.plural^2","documental_decisao_mesmo_sentido_lista_texto.plural","processo_precedente_texto.plural","sumula_texto.plural^3","conteudo_texto.plural"],"query":"covid","type":"cross_fields","fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}}],"must":[],"should":[{"query_string":{"default_operator":"AND","fields":["acordao_ata.plural^3","documental_doutrina_texto.plural","documental_indexacao_texto.plural","documental_jurisprudencia_citada_texto.plural","documental_observacao_texto.plural","documental_tese_tema_texto.plural^3","documental_tese_texto.plural^3","ementa_texto.plural^3","titulo.plural^6","decisao_texto.plural^2","sumula_texto.plural^3","conteudo_texto.plural"],"query":"covid","tie_breaker":1,"fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}},{"query_string":{"default_operator":"and","type":"phrase","tie_breaker":1,"phrase_slop":20,"fields":["acordao_ata.plural^3","documental_tese_tema_texto.plural^3","documental_tese_texto.plural^3","ementa_texto.plural^3","decisao_texto.plural^2","conteudo_texto.plural"],"query":"covid","fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}},{"query_string":{"default_operator":"and","type":"phrase","tie_breaker":1,"phrase_slop":5,"fields":["documental_acordao_mesmo_sentido_lista_texto.plural","documental_doutrina_texto.plural","documental_indexacao_texto.plural","documental_jurisprudencia_citada_texto.plural","documental_legislacao_citada_texto.plural","documental_observacao_texto.plural","partes_lista_texto.plural","processo_precedente_texto.plural","documental_decisao_mesmo_sentido_lista_texto.plural"],"query":"covid","fuzziness":"AUTO:4,7","analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}},{"query_string":{"default_operator":"and","type":"phrase","phrase_slop":1,"fields":["documental_publicacao_lista_texto.plural","ministro_facet.plural","revisor_processo_nome.plural","orgao_julgador.plural","procedencia_geografica_completo.plural","processo_classe_processual_unificada_extenso.plural","titulo.plural^6","colac_numero.plural","colac_pagina.plural","sumula_texto.plural^3"],"query":"covid","fuzziness":"AUTO:4,7","boost":0,"analyzer":"legal_search_analyzer","quote_analyzer":"legal_index_analyzer"}}]}},"number_of_fragments":64,"fragment_size":300,"order":"score","pre_tags":["<em>"],"post_tags":["</em>"],"fields":{"ementa_texto":{"fragment_size":2400,"matched_fields":["ementa_texto.plural"],"type":"fvh"},"sumula_texto":{"number_of_fragments":0,"matched_fields":["sumula_texto.plural"],"type":"fvh"},"conteudo_texto":{"fragment_size":1200,"matched_fields":["conteudo_texto.plural"],"type":"fvh"},"acordao_ata":{"fragment_size":600,"matched_fields":["acordao_ata.plural"],"type":"fvh"},"decisao_texto":{"fragment_size":1200,"matched_fields":["decisao_texto.plural"],"type":"fvh"},"documental_tese_texto":{"fragment_size":2000,"matched_fields":["documental_tese_texto.plural"],"type":"fvh"},"documental_tese_tema_texto":{"fragment_size":2000,"matched_fields":["documental_tese_tema_texto.plural"],"type":"fvh"},"documental_observacao_texto":{"matched_fields":["documental_observacao_texto.plural"],"type":"fvh"},"documental_indexacao_texto":{"matched_fields":["documental_indexacao_texto.plural"],"type":"fvh"},"documental_legislacao_citada_texto":{"matched_fields":["documental_legislacao_citada_texto.plural"],"type":"fvh"},"documental_jurisprudencia_citada_texto":{"matched_fields":["documental_jurisprudencia_citada_texto.plural"],"type":"fvh"},"documental_doutrina_texto":{"matched_fields":["documental_doutrina_texto.plural"],"type":"fvh"},"partes_lista_texto":{"matched_fields":["partes_lista_texto.plural"],"type":"fvh"},"documental_publicacao_lista_texto":{"matched_fields":["documental_publicacao_lista_texto.plural"],"type":"fvh"},"documental_acordao_mesmo_sentido_lista_texto":{"matched_fields":["documental_acordao_mesmo_sentido_lista_texto.plural"],"type":"fvh"},"documental_decisao_mesmo_sentido_lista_texto":{"matched_fields":["documental_decisao_mesmo_sentido_lista_texto.plural"],"type":"fvh"},"processo_precedente_texto":{"matched_fields":["processo_precedente_texto.plural"],"type":"fvh"},"procedencia_geografica_completo":{"matched_fields":["procedencia_geografica_completo.plural"],"type":"fvh"}}},"track_total_hits":true}

0 commit comments

Comments
 (0)