修复了通过 ip 检查器网站(html+table)从 ip 列表获取城市信息到数据框的错误

Fix an error to getting city info from a list of ip through an ip checker website (html+table) to a data frame

提问人:Andrea 提问时间:10/7/2021 更新时间:10/7/2021 访问量:26

问:

我有一个需要在地图上绘制的 IP 列表,我想使用这个网站 Ip Checker 来提取有关城市的信息并制作数据框。

网站生成的表格结构如下 complete table from the site

ROW #7 包含有关城市的信息(如果存在),如果没有,则包含纬度和经度,但这是以后的问题

我试图达到的最终结果

知识产权 城市 出现次数
64.4.99.114 科文顿 2
201.105.211.222 哈拉帕 2
73.6.19.32 德克萨斯城 1

等等

到目前为止,这是我通过手动插入获得的结果

    url_ip <- "https://ipleak.net/?q=64.4.99.114"
      
      page <- read_html(url_ip) 
      
      tbls <- html_nodes(page, "table")
      
      tbls2 <- html_table(tbls)
      
      table2 <- table2[c(1,7),2]
      
      table2 <- t(table2)
    
city_table <-  as.data.frame(table2)

手动插入的最终结果

V1版本 V2版本
64.4.99.114 科文顿

这是我到目前为止制作的

if (!require("pacman"))
  install.packages("pacman")
pacman::p_load(
  dplyr,
  readr,
  ggplot2,
  hrbrthemes,
  RColorBrewer,
  lubridate,
  countrycode,
  stringi,
  tidyverse,
  rvest,
  purrr,
  tidyr,
  openxlsx,
)


ip_range <- threedsecure_authentication_report_tidy %>% pull(shopper_ip) #this is from our payment's system report generator

ip_range <- unique(ip_range)

ip_range <- trimws(ip_range)

purrr::map_df(ip_range, ~ { 
  
  url_reviews <- paste0("https://ipleak.net/?q,.x)
  
  page <- read_html(url_reviews) 
  
  # Review Question
  tbls <- html_nodes(page, "table")
  
  tbls2 <- html_table(tbls)
  
  table2 <- table2[c(1,7),2]
  
  table2 <- t(table2)
  
  table2 <- as.data.frame(table2) -> q #I'm not sure about this part
  
  data.frame(q) }) -> ip_geo

但我得到这个:open.connection(x, “rb”) 中的错误:HTTP 错误 504

这是回溯

12.
open.connection(x, "rb") 
11.
open(x, "rb") 
10.
read_xml.connection(con, encoding = encoding, ..., as_html = as_html, 
    base_url = x, options = options) 
9.
read_xml.character(x, encoding = encoding, ..., as_html = TRUE, 
    options = options) 
8.
read_xml(x, encoding = encoding, ..., as_html = TRUE, options = options) 
7.
withCallingHandlers(expr, warning = function(w) if (inherits(w, 
    classes)) tryInvokeRestart("muffleWarning")) 
6.
suppressWarnings(read_xml(x, encoding = encoding, ..., as_html = TRUE, 
    options = options)) 
5.
read_html.default(url_reviews) 
4.
read_html(url_reviews) 
3.
.f(.x[[i]], ...) 
2.
map(.x, .f, ...) 
1.
purrr::map_df(ip_range, ~{
    url_reviews <- paste0("https://ipleak.net/?q=", .x)
    page <- read_html(url_reviews)
    tbls <- html_nodes(page, "table") ... 

我也看到这样做的 R 包,但它们似乎不起作用: ip2location

R 网页抓取 咕噜声 IP 地理位置

评论


答: 暂无答案