1 \({\color{Black} \circledR} {\color{DarkGreen} \gamma} {\color{Red} \sigma} \; {\color{Blue} \xi} {\color{Red} \eta} {\color{Blue} g}\)1 🎏2


Quantitative Trading in Sportsbook and financial market



2 Setting

2.1 SCSS Setup

# install.packages("remotes")
library('BBmisc', 'rmsfuns')
#remotes::install_github("rstudio/sass")
lib('sass')
## sass 
## TRUE
/* https://stackoverflow.com/a/66029010/3806250 */
h1 { color: #002C54; }
h2 { color: #2F496E; }
h3 { color: #375E97; }
h4 { color: #556DAC; }
h5 { color: #92AAC7; }

/* ----------------------------------------------------------------- */
/* https://gist.github.com/himynameisdave/c7a7ed14500d29e58149#file-broken-gradient-animation-less */
.hover01 {
  /* color: #FFD64D; */
  background: linear-gradient(155deg, #EDAE01 0%, #FFEB94 100%);
  transition: all 0.45s;
  &:hover{
    background: linear-gradient(155deg, #EDAE01 20%, #FFEB94 80%);
    }
  }

.hover02 {
  color: #FFD64D;
  background: linear-gradient(155deg, #002C54 0%, #4CB5F5 100%);
  transition: all 0.45s;
  &:hover{
    background: linear-gradient(155deg, #002C54 20%, #4CB5F5 80%);
    }
  }

.hover03 {
  color: #FFD64D;
  background: linear-gradient(155deg, #A10115 0%, #FF3C5C 100%);
  transition: all 0.45s;
  &:hover{
    background: linear-gradient(155deg, #A10115 20%, #FF3C5C 80%);
    }
  }
## https://stackoverflow.com/a/36846793/3806250
options(width = 999)
knitr::opts_chunk$set(class.source = 'hover01', class.output = 'hover02', class.error = 'hover03')

## Set the timezone but not change the datetime
Sys.setenv(TZ = 'Asia/Tokyo')
## options(knitr.table.format = 'html') will set all kableExtra tables to be 'html', otherwise need to set the parameter on every single table.
options(warn = -1, knitr.table.format = 'html')#, digits.secs = 6)

## https://stackoverflow.com/questions/39417003/long-vectors-not-supported-yet-abnor-in-rmd-but-not-in-r-script
knitr::opts_chunk$set(cache = TRUE, warning = FALSE, 
                      message = FALSE, cache.lazy = FALSE)



2.2 Setup

## https://www.ip138.com/sj
if(!suppressPackageStartupMessages(require('BBmisc'))) {
  suppressWarnings(suppressMessages(install.packages('BBmisc')))
  }
require('BBmisc')
pkgs <- c('rvest', 'RSelenium', 'reticulate', 'tidyverse', 'magrittr', 
          'RCurl', 'plumber', 'bigQueryR', 'xts', 'forecast', 'purrr', 
          'googleCloudRunner', 'plyr', 'chinese.misc', 'knitr', 'tidyr', 
          'kableExtra', 'plyr', 'dplyr', 'devtools', 'XML', 'xml2', 
          'formattable', 'lubridate')
suppressAll(lib(pkgs))
#(dependencies = TRUE, INSTALL_opts = '--no-lock')
lnk <- 'https://www.ip138.com/sj'
rm(pkgs)

#https://github.com/githubwwwjjj/chinese.misc
#options(tmp_chi_locale=NA)
options(tmp_chi_locale="Chinese (Traditional)_Taiwan.950")


2.4 手机号前三码一览


## https://rstudio.github.io/reticulate/articles/python_packages.html
# create a new environment 
conda_create()
mods <- c('scipy', 'numpy', 'pandas', 'lxml', 'bs4', 'selenium', 'time', 'string', 'random')
mods %>% llply(., function(x) {
    tryCatch({
        y <- conda_install(conda_list()[[1]][2], x)
        y <- import(y)
    }, error = function(e) {
        NULL
    })
})

# import SciPy (it will be automatically discovered in "r-reticulate")
modsip <- mods %>% llply(import)

# indicate that we want to use a specific condaenv
#use_condaenv(conda_list()[[1]][2])

# import SciPy (will use 'r-reticulate' as per call to use_condaenv)
#scipy <- import('scipy')
from selenium import webdriver
from bs4 import BeautifulSoup
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

url = 'https://www.imdb.com/search/title?release_date=2018&sort=num_votes,desc&page=1'

driver = webdriver.Chrome('/r-reticulate/chromedriver')
driver.get(url)
soup = BeautifulSoup(driver.page_source,"html.parser")

while True:
    items = [itm.get_text(strip=True) for itm in soup.select('.lister-item-p6482776ent a[href^="/title/"]')]
    print(items)

    try:
        driver.find_element_by_xpath('//a[p6482776ains(.,"Next")]').click()
        soup = BeautifulSoup(driver.page_source,"html.parser")
    except Exception: break



2.5 手机号查询


2.5.1 样本


手机号码归属地查询可以查询任何国内手机号。

xxx <- read_html('view-source_https___m.ip138.com_sj.asp_mobile=1316482776.html') %>% 
    html_nodes('td') %>% 
    .[144:152] %>% 
    html_text(trim = T) %>% 
    str_replace_all('^<tr><td class=\"th\"|^<tr><td class=\"th\">|</td<td<span| width=\"36%\"|</td><td>|>|</span></td></tr>$|\\*', '') %>% 
    .[. != ''] %>% 
    str_split('<span')

xxx %>% data.frame %>% 
  t %>% data.frame %>% 
  as_tibble %>% 
  dplyr::rename('类别' = X1, '明细' = X2) %>% 
  kbl('html', caption = '手机号详情', escape = F, align = 'r') %>% 
  kable_styling(
    bootstrap_options = c('striped', 'hover', 'condensed', 'responsive')) %>% 
  scroll_box(height = '400px')
手机号详情
类别 明细
手机号码段 1316482776
卡号归属地 福建 福州市
卡 类 型 联通预付费卡
区 号 0591
邮 编 350000


2.5.2 靓号

import pandas as pd
import lxml

test = 'https://www.ip138.com/mobile.asp?mobile=1316482776&action=mobile'

tables = pd.read_html(test)
rankings = tables[-1]
rankings.iloc[:200]
#https://m.ip138.com/sj.asp?mobile=1316482776
#lnk <- c('https://m.ip138.com/mobile.asp?mobile=', '&action=mobile')

i <- sprintf("%03d", 1:999) %>% 
  paste0(6482776)
lnk <- paste0('https://m.ip138.com/sj.asp?mobile=', i)
rm(i)

p6482776 <- lnk %>% 
  llply(., function(ii) {
    tryCatch({
      ii %>% getURL %>% 
        read_html %>% html_table()
    }, error = function(e) {
        NULL
    }) %>% unlist
  })

p6482776[sapply(p6482776, is.null)] <- NULL
#https://m.ip138.com/sj.asp?mobile=1316482776
#lnk <- c('https://m.ip138.com/mobile.asp?mobile=', '&action=mobile')

i <- sprintf("%03d", 120:200) %>% 
  paste0(6482776)
lnk <- paste0('https://m.ip138.com/sj.asp?mobile=', i)
rm(i)

p6482776 <- lnk %>% 
  llply(., function(ii) {
    tryCatch({
      xxx <- ii %>% read_html() %>% 
        html_nodes('td') %>% 
        # .[144:152] %>% 
        html_text(trim = T)# %>% 
        #str_replace_all('^<tr><td class=\"th\"|^<tr><td class=\"th\">|</td<td<span| width=\"36%\"|</td><td>|>|</span></td></tr>$|\\*', '') %>% 
        #.[. != ''] %>% 
        #str_split('<span')

      #xxx %<>% data.frame %>% 
      #  t %>% 
      #  as_tibble %>% 
      #  dplyr::rename('种类' = V1, '明细' = V2)
      cat('\nGet"', ii, '"');
      xxx
    }, error = function(e) {
      cat('\n', ii, 'not exist'); 
      NULL
    })# %>% unlist
  })

p6482776[sapply(p6482776, is.null)] <- NULL
p6482776 <- p6482776[sapply(p6482776, function(x) length(x)>1)]

p6482776 %<>% llply(., function(x) {
    x %>% 
    str_replace_all('\\*', '') %>% 
    matrix(nc = 2, byrow = TRUE) %>% 
    data.frame %>% 
    as_tibble %>% 
    dplyr::rename('类别' = X1, '明细' = X2)
  })

p6482776 %<>% 
    ldply(., function(x) {
        x %>% t %>% data.frame %>% 
            mutate_at(1:ncol(.), funs(str_replace_all(., ' ', ''))) %>% 
        .[-1,]
  }) %>% as_tibble %>% 
    mutate(`手机号码段` = as.numeric(X1), 
           `卡号归属地` = factor(X2), 
           `卡类型` = factor(X3), 
           `区号` = factor(X4),
           `邮编` = as.numeric(X5)) %>% 
    .[-c(1:5)]

## https://rstudio-pubs-static.s3.amazonaws.com/406749_dc4af7298f934812b35b11631abb5ad5.html

saveRDS(p6482776, file = 'data/p6482776.rds')
p6482776 <- read_rds('data/p6482776.rds')
p6482776 %>% 
  mutate(
    手机号码段 = color_tile('white', 'darkgrey')(手机号码段), 
    卡类型 = if_else(
      str_detect(卡类型, '联通'), 
  cell_spec(卡类型, background = 'black', color = 'red', italic = TRUE), 
    if_else(
      str_detect(卡类型, '电信'), 
      cell_spec(卡类型, background = 'blue', color = 'white', italic = TRUE), 
    if_else(
      str_detect(卡类型, '移动'), 
  cell_spec(卡类型, background = 'lightgreen', color = 'blue', italic = TRUE), 
  cell_spec(卡类型, background = 'gold', color = 'black'))
  ))) %>% 
  kbl('html', caption = '手机号详情', escape = F, align = 'r') %>% 
  kable_styling(
    bootstrap_options = c('striped', 'hover', 'condensed', 'responsive')) %>% 
  scroll_box(height = '400px')
手机号详情
手机号码段 卡号归属地 卡类型 区号 邮编
1306482776 江苏宿迁市 联通130卡 0527 223800
1316482776 福建福州市 联通预付费卡 0591 350000
1326482776 湖北黄冈市 联通130卡 0713 438000
1336482776 新疆博尔塔拉蒙古自治州 电信CDMA卡 0909 833400
1346482776 辽宁阜新市 移动全球通卡 0418 123000
1356482776 上海 移动全球通卡 021 200000
1366482776 内蒙古兴安盟 移动全球通卡 0482 137400
1376482776 上海 移动全球通卡 021 200000
1386482776 山东青岛市 移动全球通卡 0532 266000
1396482776 山东青岛市 移动全球通卡 0532 266000
1406482776 未知 未知 NA
1416482776 电信 NA
1426482776 未知 未知 NA
1436482776 未知 未知 NA
1446482776 未知 未知 NA
1456482776 联通 NA
1466482776 联通 NA
1476482776 湖南长沙市 移动数据卡 0731 410000
1486482776 移动 NA
1496482776 电信 NA
1506482776 山东青岛市 移动150卡 0532 266000
1516482776 内蒙古巴彦淖尔市 移动151卡 0478 15000
1526482776 山东泰安市 移动152卡 0538 271000
1536482776 山西大同市 电信CDMA卡 0352 37000
1546482776 未知 未知 NA
1556482776 山东泰安市 山东联通GSM卡 0538 271000
1566482776 陕西西安市 联通130卡 029 710000
1576482776 内蒙古兴安盟 移动157卡 0482 137400
1586482776 山东临沂市 移动动感地带卡 0539 276000
1596482776 山东临沂市 移动全球通卡 0539 276000
1606482776 未知 未知 NA
1616482776 未知 未知 NA
1626482776 电信 NA
1636482776 未知 未知 NA
1646482776 未知 未知 NA
1656482776 内蒙古兴安盟 华翔联信移动 0482 137400
1666482776 内蒙古兴安盟 联通 0482 137400
1676482776 内蒙古兴安盟 联通 0482 137400
1686482776 未知 未知 NA
1696482776 未知 未知 NA
1706482776 广西桂林市 虚拟运营商移动 0773 541000
1716482776 广东东莞市 虚拟运营商联通 0769 523000
1726482776 移动 NA
1736482776 四川成都市 电信173卡 028 610000
1746482776 电信 NA
1756482776 河南新乡市 联通175卡 0373 453000
1766482776 广东广州市 联通176卡 020 510000
1776482776 重庆 电信177卡 023 400000
1786482776 山东泰安市 移动178卡 0538 271000
1796482776 未知 未知 NA
1806482776 云南昆明市 云南电信CDMA卡 0871 650000
1816482776 贵州贵阳市 中国电信天翼卡 0851 550000
1826482776 山东泰安市 移动182卡 0538 271000
1836482776 山东泰安市 移动183卡 0538 271000
1846482776 山东泰安市 移动184卡 0538 271000
1856482776 山东临沂市 联通185卡 0539 276000
1866482776 广东广州市 联通186卡 020 510000
1876482776 山东泰安市 移动187卡 0538 271000
1886482776 山东泰安市 移动188卡 0538 271000
1896482776 上海 中国电信天翼卡 021 200000
1906482776 未知 未知 NA
1916482776 湖南益阳市 电信 0737 413000
1926482776 未知 未知 NA
1936482776 未知 未知 NA
1946482776 未知 未知 NA
1956482776 未知 未知 NA
1966482776 未知 未知 NA
1976482776 未知 未知 NA
1986482776 广东广州市 移动 020 510000
1996482776 电信 NA


2.7 手机号维护网站


https://www.ding.com可以设定7天、14天、28天、30天自动充值,跨越全球手机号。

https://www.dingconnect.com当代理,维护全球手机号。



3 结论


3.2 附录

  • File creation date: 2020-10-18
  • File latest updated date: 2021-12-09
  • R version 4.1.2 (2021-11-01)
  • rmarkdown package version: 2.11
  • File version: 0.2.1
  • Author Profile: ®γσ, ξηg Lιαη Ημ
  • GitHub: Source Code
  • Additional session information
suppressMessages(require('formattable', quietly = TRUE))
suppressMessages(require('knitr', quietly = TRUE))
suppressMessages(require('kableExtra', quietly = TRUE))

sys1 <- devtools::session_info()$platform |> 
    unlist() |> 
    {\(.) data.frame(row.names = 1:length(.), 
                     Category = names(.), session_info = .)}()

sys2 <- data.frame(Sys.info()) |> 
    {\(.) data.frame(Category = row.names(.), Sys.info = .[,1])}()

#remarks, dim(sys1), dim(sys2)
if (nrow(sys1) == 11 & nrow(sys2) == 8) {
  sys2 <- sys2 |> 
    {\(.) rbind(., data.frame(
    Category = c('rmarkdown', 'rsconnect', 'Current time'), 
    Sys.info = c(as.character(getwd()), 
                 as.character(packageVersion('rsconnect')), 
                 paste(as.character(lubridate::now('Asia/Tokyo')), 'JST 🌏'))))}()
  
} else if (nrow(sys1) == 10 & nrow(sys2) == 8) {
  sys1 %<>% rbind(., data.frame(Category = '', session_info = ''))
  
  sys2 <- sys2 |> 
    {\(.) rbind(., data.frame(
    Category = c('rmarkdown', 'rsconnect', 'Current time'), 
    Sys.info = c(as.character(getwd()), 
                 as.character(packageVersion('rsconnect')), 
                 paste(as.character(lubridate::now('Asia/Tokyo')), 'JST 🌏'))))}()
}

sys <- cbind(sys1, sys2) |> 
  {\(.) 
    kbl(., caption = 'Additional session information:')}() |> 
  {\(.) 
    kable_styling(., bootstrap_options = c('striped', 'hover', 'condensed', 'responsive'))}() |> 
  {\(.) 
    row_spec(., 0, background = 'DimGrey', color = 'yellow')}() |> 
  {\(.) 
    column_spec(., 1, background = 'CornflowerBlue', color = 'red')}() |> 
  {\(.) 
    column_spec(., 2, background = 'grey', color = 'black')}() |> 
  {\(.) 
    column_spec(., 3, background = 'CornflowerBlue', color = 'blue')}() |> 
  {\(.) 
    column_spec(., 4, background = 'grey', color = 'white')}() |> 
  {\(.) 
    row_spec(., 11, bold = TRUE, color = 'yellow', background = '#D7261E')}()

rm(sys1, sys2)
sys
Additional session information:
Category session_info Category Sys.info
version R version 4.1.2 (2021-11-01) sysname Linux
os Ubuntu 20.04.3 LTS release 5.4.0-1037-aws
system x86_64, linux-gnu version #39~18.04.1-Ubuntu SMP Fri Jan 15 02:48:42 UTC 2021
ui X11 nodename application-2789879-deployment-10777680-8p2kj
language (EN) machine x86_64
collate C.UTF-8 login unknown
ctype C.UTF-8 user rstudio-user
tz Asia/Tokyo effective_user rstudio-user
date 2021-12-09 rmarkdown /cloud/project
pandoc 2.14.0.3 @ /usr/lib/rstudio-server/bin/pandoc/ (via rmarkdown) rsconnect 0.8.25
Current time 2021-12-09 12:08:28 JST 🌏

Powered by - Copyright® Intellectual Property Rights of Sςιβrοκεrs Trαdιηg®️経営企業