[TIL] 03.04 cheerio, excel, mysql 삽질...
2020. 3. 4. 23:41ㆍTIL
테이블형 데이터들을 크롤링 해오기위해서 치리오를 사용하였다.
let url = "http://www.example.com"
request(url, function(error, res, body){
var $ = cheerio.load(body)
var data = readTable(".board_view") //table의 id or className
console.log(data)
function readTable(query){
var data = [];
var table = $(query);
var tr_list = $(table).children("tbody").children("tr");
for(var row = 0; row < tr_list.length; row++) {
var cells = tr_list.eq( row ).children( );
var cols = [ ];
// 열의 갯수만큼 반복문을 실행
for( var column = 0; column < cells.length; column++ ) {
var hero = cells.eq( column ).text( );
cols.push( hero );
}
data.push( cols );
}
}
return data;
});
위와 같은 방식을 사용하여 크롤링을 하려고 하였지만 몇번의 시도는 잘되다가 중간에 갑자기 알 수 없는 에러로 막혀버렸다.
parents를 찾을수 없다는 에러 였는데 해결을 하지 못하여 테이블의 데이터를 엑셀파일에 붙여넣어 그 엑셀파일을 DB로 넣는 방법으로 변경했다.
const XLSX = require("xlsx");
let workbook = XLSX.readFile(__dirname + "/./adress.xlsx")
let worksheet = workbook.Sheets
res.json(worksheet)
xlsx 모듈을 사용하였고 엑셀 데이터들을 불러 올 수 있었다.
mysql을 실행시켜서 테이블을 생성하고 데이터를 넣어 주려고 했는데 mysql 에러가 발생하였다.
mysql -u root -p 명령어를 통해서 접속을 하려고 하면 아래와 같은 에러가 발생하였다.
패스워드를 입력하지 않아서 발생한 에러라고 하는데 나는 패스워드를 설정한 적이 없었다. 그래서 패스워드를 초기화 시키는 방법을 찾아보고 있다. 몇가지 방법을 시도해 보았지만 아직 해결을 못하였다.
오랜만에 서버를 만들어 주려고 하니 어려움이 많았다. 역시 계속해서 코드를 쳐줘야 하는것 같다. 이번 기회에 다시 서버 코드에 익숙해져야 겠다.
'TIL' 카테고리의 다른 글
[TIL] 03.09 Cannot set headers...,검색 query (0) | 2020.03.09 |
---|---|
[TIL] 03.05 MySQL 재설치.. (0) | 2020.03.05 |
[TIL] 03.03 node 프로젝트 시작하기 (0) | 2020.03.03 |
[TIL] 03.02 nosql schema design에 대해서 (0) | 2020.03.02 |
[TIL] 02.28 npm audit (0) | 2020.02.28 |