crawl.js
2.56 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const axios = require('axios');
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
port: '3307',
user: 'root',
password: 'yj',
database: 'projectdf',
}).promise();
const GetItem = async (filter, page) => {
// filter = 에픽(204), 신화(207)
const response = await axios({
method: 'post',
url: 'http://df.nexon.com/FRM/info/equipment_search_api.php',
headers: {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Referer': 'http://df.nexon.com/df/info/equipment/search?page=1&is_limit=&filter=207&max=100&min=100&level=Y&order_name=level&order_type=asc',
},
data: `mode=search&data[keyword]=&data[filter]=${filter}&data[level]=Y&data[min]=100&data[max]=100&data[setitem]=N&data[order_name]=level&data[order_type]=asc&page=${page}`,
});
return response.data.data.items;
};
(async () => {
const ex = /.운디네|.샐러맨더|.실프|포용의|맹렬히|휘감는|잔잔한|신록의 숨결|에너지 분배 제어기|전자기 진공관|제어 회로|무의식 : .|무형 : .|환영 : .|원초의 꿈.|진 :.|.결투장|퍼펙트 컨트롤|불타오르는 푸른 마력|암살자의 비수|마더 오브 네이쳐|거미 여왕의 목소리|풀 가드 네클레스|선지자의 목걸이|생멸 관장자의 팔찌|독을 머금은 가시장갑|할기의 링|올 엘리멘탈 크리스탈|웨슬리의 전술지휘봉|볼 오브 러데이니언|금지된 계약의 서|응축된 마력의 소용돌이|청면수라의 가면|얼어붙은 숨결의 결정|뒤틀린 이계의 마석|영광의 보석|적귀의 차원석|패스트퓨처 이어링|무념의 의식|무의식의 꽃|무형의 절개|무언의 죄악|무아의 고리/ig;
const filter_list = ['204', '207'];
for (const filter of filter_list) {
let page = 1;
while (true) {
const data = await GetItem(filter, page);
for (const item of data) {
try {
if (item.name.match(ex) == null) {
await connection.query('INSERT INTO `item_exception` SET ?', {
itemId: item.itemId,
name: item.name,
type: (filter === '204') ? 'epic' : 'myth',
});
}
} catch (e) {}
}
if (data.length === 0) {
break;
}
page++;
}
}
await connection.close();
})();