Tôi đang thử nghiệm một số đoạn mã trên web trong R. Tôi đã đọc nhiều hướng dẫn, tài liệu và đã thử nhiều thứ khác nhau nhưng không thành công cho đến nay.R web scraper với jsessionid
URL tôi đang cố gắng xóa là this one. Nó có dữ liệu công khai, chính phủ và không có tuyên bố nào chống lại kẻ lừa đảo web. Nó bằng tiếng Bồ Đào Nha, nhưng tôi tin rằng nó sẽ không phải là một vấn đề lớn.
Nó hiển thị biểu mẫu tìm kiếm, với một số trường. Thử nghiệm của tôi đã tìm kiếm dữ liệu từ một trạng thái cụ thể ("RJ", trong trường hợp này là trường "UF") và thành phố ("Rio de Janeiro", trong trường "MUNICIPIO"). Bằng cách nhấp vào "Pesquisar" (Tìm kiếm), nó cho thấy đầu ra sau đây:
Sử dụng Firebug, tôi thấy URL mà họ gọi (sử dụng các thông số ở trên) là:
http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam?buscaForm=buscaForm&codEntidadeDecorate%3AcodEntidadeInput=&noEntidadeDecorate%3AnoEntidadeInput=&descEnderecoDecorate%3AdescEnderecoInput=&estadoDecorate%3A**estadoSelect=33**&municipioDecorate%3A**municipioSelect=3304557**&bairroDecorate%3AbairroInput=&pesquisar.x=42&pesquisar.y=16&javax.faces.ViewState=j_id10
Các trang web sử dụng một jsessionid, như có thể thấy bằng cách sử dụng sau đây:
library(rvest)
library(httr)
url <- GET("http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/")
cookies(url)
biết nó sử dụng một jsessionid, tôi sử dụng cookie (url) để kiểm tra thông tin này, và sử dụng nó vào một URL mới như thế này:
url <- read_html("http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam;jsessionid=008142964577DBEC622E6D0C8AF2F034?buscaForm=buscaForm&codEntidadeDecorate%3AcodEntidadeInput=33108064&noEntidadeDecorate%3AnoEntidadeInput=&descEnderecoDecorate%3AdescEnderecoInput=&estadoDecorate%3AestadoSelect=org.jboss.seam.ui.NoSelectionConverter.noSelectionValue&bairroDecorate%3AbairroInput=&pesquisar.x=65&pesquisar.y=8&javax.faces.ViewState=j_id2")
html_text(url)
Vâng, đầu ra không có dữ liệu. Trong thực tế, nó có một thông báo lỗi. Dịch sang tiếng Anh, về cơ bản nói rằng phiên đã hết hạn.
Tôi cho rằng đó là một sai lầm cơ bản, nhưng tôi nhìn quanh và không thể tìm ra cách để vượt qua điều này.
Cảm ơn rất nhiều, hrbmstr. Nó hoạt động rất tốt! –