비고:minkabu.jp에서 증권 코드와 개요 설명을 얻을 수 있는 조개껍질 프로그램

2022년 2월 11일 21시 29분
minkabu.jp에 게재된 정보에 따라 일본 시장의 증권 코드, 업계, 개요 일람표를 CSV 형식으로 제작한 앱이 제작됐다.

증권 코드 일람표 제작


minkabu.jp에서 운영하는 브랜드는minkabu입니다.jp가 결정한 40개 분류에 따라 일람표가 있기 때문에 다운로드하면 증권 코드 일람표를 만들 수 있다.근데 민카부.jp의 표는 때때로 여러 페이지로 나누어지기 때문에 모든 페이지를 다운로드해야 합니다.
분류 번호
분류 내용
1
수산, 농림업
2
광산업
:
35
REIT
36
인덱스
40
기타
예를 들어 분류번호 29인'증권·상품 선물거래업'의 3쪽 URL은 이렇다.
https://minkabu.jp/stock/stocksitemap/29?page=3
이 페이지에는 포획 이미지 같은 정보가 실렸다.

원하는 것은 시계의 부분, 특히 명품 칸이다.여기에는 증권 코드와 브랜드 명칭이 있다.상장폐지의 증권 코드를 상장폐지라고 부른다.그래서 이걸 추출한 일회용 조개껍질 코드만 썼어요.아래에 쓴 minkabu_jp.csh는 그것을 만드는 Csh 코드의 예이다.이 작업을 수행한 후minkabu_jp-YYYYMMDD.csv(YYYYMMDD는 년 월 일) CSV 형식의 파일을 만들었습니다.이 CSV 파일의 기록 형식은'증권 코드, 브랜드 이름, 민주 분류'다.
minkabu_jp.csh
set outCsv1FilePath="${0:t:r}-"`date +%Y%m%d`'.csv'

if (-f "${outCsv1FilePath}") rm -f "${outCsv1FilePath}"
touch "${outCsv1FilePath}"

echo '証券コード,銘柄名,みんかぶ分類' \
| tee -a "${outCsv1FilePath}"

foreach gategory \
  (\
  '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,ETF' \
  '35,REIT' \
  '36,指数' \
  '40,その他' \
  )
  set gategory_number=`echo "${gategory}" | cut -d, -f1`
  set gategory_label=`echo "${gategory}" | cut -d, -f2`
  set page=1
  while (! 0)
    wget -q -O- "https://minkabu.jp/stock/stocksitemap/${gategory_number}?page=${page}" \
    | tr -d '\r' \
    | sed 's/^ \+//' \
    | awk '/^<table summary="銘柄一覧" class="md_table">/,/^<\/table>/' \
    | awk '/^<tr>/,/^<\/tr>/' \
    | awk '/^<tr>/{tr=0};++tr==4||tr==7' \
    | tail -n +3 \
    | sed 's/<[^>]\+>//g' \
    | sed 's/ /_/g;s/ /_/g' \
    | xargs -n 2 \
    | awk NF \
    | tr ' ' , \
    | sed 's/$/,'"${gategory_label}"'/' \
    | tee -a "${outCsv1FilePath}"
    if (${status}) break
    @ page++
  end
end

# 後半につづく...

브랜드별 개요


minkabu.jp의 각 브랜드 페이지에minkabu.jp가 쓴 그 브랜드의 개요 설명문이 있기 때문에 그것을 일람하고 다음에 그 코드를 만들려고 합니다.
위 코드로 제작된 파일minkabu_jp-YYYYMMDD.csv이 존재하는 것을 전제조건으로 minkabu_jp-YYYYMMDD.csv의 증권 코드 중 하나에 대한minkabu.jp의 브랜드 페이지만 다운로드하고 처리하면 됩니다.
minkabu.jp의 증권번호 8705'오카토 닛산 증권지주'페이지의 URL은 다음과 같다.
https://minkabu.jp/stock/8705
이 페이지에는 포획 이미지 같은 정보가 실렸다.

원하는 것은 거래시장인'토픽 JASDAQ(표준)', 업종인'증권·상품 선물거래업'의 일부와 그 아래 개요 설명문인'상품 선물 대기업'이다. 외화·금융상품의 증거금 거래에 주력한다.닛산증권과 합병한다.섹션그래서 이걸 추출한 일회용 조개껍질 코드만 썼어요.밑에 쓰여있는 Minkabu.jp.csh의 후반부는 그것을 만드는 Csh 코드의 예이다.이 작업을 수행한 후minkabu_jp-YYYYMMDD+info.csv(YYYYMMDD는 년 월 일) CSV 형식의 파일을 만들었습니다.이 CSV 파일의 기록 형식은'증권코드, 주식명, 거래시장, 업종분류, 개요설명문'이다.
minkabu_jp.csh
set outCsv2FilePath="${outCsv1FilePath:t:r}+info.csv"

if (-f "${outCsv2FilePath}") rm -f "${outCsv2FilePath}"
touch "${outCsv2FilePath}"

echo '*stock-code*,*stock-name*,*stock-market*,*sector-name*,*minkabu-description*' \
| tee -a "${outCsv2FilePath}"

foreach stockCode (`cat "${outCsv1FilePath}" | tail -n +2 | cut -d, -f1 | grep '^[0-9][0-9][0-9][0-9]$'`)
  wget -q -O- https://minkabu.jp/stock/${stockCode} \
  | sed -n 's/^ \+//;/./p' \
  | awk '/^<div class="stock_label">$/,/^<\/div>$/;/^<h1>/;/^<div class="ly_content_wrapper size_ss">$/,/^<\/div>$/' \
  | sed -n 's/<[^>]\+>//g;s/&nbsp;&nbsp;/\n/;/./p' \
  | sed 4d \
  | sed 's/&lt;/</g ; s/&gt;/>/g ; s/&amp;/\&/g' \
  | sed 's/^/"/;s/$/"/' \
  | tr '\n' , \
  | sed 's/,$/\n/' \
  | awk -vFS=, -vOFS=, '{print $1,$3,$2,$4,$5}' \
  | tee -a "${outCsv2FilePath}"
end

끝맺다

  • 이 스크립트의 실행 시간은 매우 길다.지령을 입력하면 밥을 먹거나 드라마를 보는 느낌이다.
  • 나는 여러 페이지를 연속으로 가지러 가지만 한 번에 한 번에 많은 시간이 걸리기 때문에 디도스 공격처럼 되지는 않을 것 같다.궁금하면 순환의 마지막 명령sleep을 입력하면 된다.
  • 홈페이지 복제의 숙명으로서 만약에 사이트 측이 페이지 형식을 바꾸면 당연히 이 코드를 사용할 수 없다.2022년 4월 JPX의 시장 분류 변경 시기인 민카부.만약 jp도 페이지 형식을 바꾸기에 충분하다면.
  • 좋은 웹페이지 즐겨찾기