컴파일 가능한 C 코드 데이터 생성을 위해 코딩테스트에서 사용한 코드를 이용하려고 한다.

AtCoder 사이트는 코딩테스트 대회를 진행하는 사이트로 대회에 제출한 코드들을 볼 수 있는 사이트다.
로그인을 해야 코드를 볼 수 있기 때문에 사이트에 로그인 한 후 세션 쿠키를 이용하여 크롤링을 하였다.

먼저 대회 목록에서 개최한 대회 명을 가져온다.

그다음 위에서 구한 대회명을 이용하여 대회에 코드를 제출한 사용자 명을 가져온다. 이때, 언어는 C, 상태는 AC(Accept) 코드 제출자 정보를 가져온다.

실제로 코드를 가져오는 코드이다. 위에서 구한 사용자 명과 사용자 아이디를 이용하여 해당 사용자가 제출한 코드를 가져온다.
"https://atcoder.jp/contests/{contest_id}/submissions/{submission_id}"
다음과 같은 url로 GET요청을 하여 정보를 가져온다. 응답이 200이면 올바르게 가져온 것이며, 가져온 코드는 파일에 저장한다.
맨 아래 sleep이 있는데 이는 너무 많은 요청을 하면 트래픽 제한을 넘겨 서버에서 강제로 연결을 끊게 된다.

마지막 Main문이다. 앞서 설명한 함수들을 호출하는 코드이며
전체적인 흐름은 대회 명을 가져오고 각 대회에 참여한 유저를 찾은다음 각 유저의 제출 코드를 가져오는 순서로 진행된다.
간혹 대회명을 가져올때, 403이 뜨는 경우가 있다. 해당 대회들은 모아서 따로 돌려주었다.

데이터를 크롤링하고 생성된 데이터 개수를 카운트 하는 코드이다.
현재까지 약 97,000개 생성하였다.
가져온 데이터를 switch유무에 따라 분류하는 코드를 작성해 주었다.

데이터가 있는 위치, switch, non-switch를 저장할 경로를 작성해 주고 디렉토리를 생성해 주었다.
데이터가 있는 디렉토리에서 .c파일들을 가져와 "switch"가 포함돼 있는지 확인후 저장해 준다.
트래픽 제한을 피하기 위해 딜레이를 넣어 데이터를 가져오는데 매우 오래걸린다.
switch를 사용하는 코드가 많이 없어 최대한 많은 코드를 가져와야 할 것 같다.