반응형
0. 크롬 접속
1. 모바일환경으로 URL변경
2. 크롤링 원하는 게시판으로 이동
3. F12개발자도구 > Network > XHR
4. 글목록 하단 '더보기' 클릭
5. 통신 방식 확인
(1) Header카테고리에서 Request Method 확인
- GET방식인지 Post방식인지..
(2) parameter확인
- 1안 : 개발자도구에 새로 업데이트된 항목 (ArticleList.json?search....) 오른쪽클릭 > Copy > Copy link address 클릭 > 복사URL확인
- 2안 : Header카테고리에서 Request URL 확인 (get방식일 경우, ?로 url 구분 / &으로 파라미터 연결)
[1차]
import requests
import json
f = open("C:/Users/kej82/Documents/개인/새파일.txt",'w', encoding='utf-8')
list_url = 'https://apis.naver.com/cafe-web/cafe2/ArticleList.json'
n=0
while True:
n = n + 1
params = {
'search.clubid' : '15754634', # 카페id
'search.queryType' : 'lastArticle',
'search.menuid': '1212', # 게시판id (취준생방)
'search.page': n, #페이지번호
#'search.pageLastArticleId': 6210000, #더보기 버튼 눌렀을 때 마지막 article의 id
'search.firstArticleInReply': 'false',
}
html = requests.get(list_url, params = params).text
#print(html)
#print(type(html))
jsonObj = json.loads(html)
#print(type(jsonObj))
message = jsonObj.get("message")
articleList = message["result"]["articleList"][9]
subject = articleList["subject"]
print(subject)
f.write(subject + "\r")
if n == 50000:
break # while문 종료.
f.close()
[2차] _1차 수정본
import requests
import json
f = open("C:/Users/kej82/Documents/개인/새파일.txt",'w', encoding='utf-8')
list_url = 'https://apis.naver.com/cafe-web/cafe2/ArticleList.json'
page=0
pageLastArticleId = ''
maxPage=10 #대략 몇 페이지 가져와야 최근 하루치인지, 한달치인지 가늠해봐야 함★
while True:
page = page + 1
params = {
'search.clubid' : '15754634', # 카페id
'search.queryType' : 'lastArticle',
'search.menuid': '1212', # 게시판id (취준생방)
'search.replylistorder': '', # 정렬기준
'search.firstArticleInReply': 'false',
'search.page': page, #페이지번호
'search.pageLastArticleId': pageLastArticleId #더보기 버튼 눌렀을 때 마지막 article의 id
}
html = requests.get(list_url, params=params, verify=False).text
jsonObj = json.loads(html)
# urllib3
#urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# requests
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
message = jsonObj.get("message")
articleSeq = 0;
articleList = message["result"]["articleList"]
articleSize = len(articleList)
#page : 1 START
print("page : " + str(page) + " (" + str(articleSize) + ") START")
while articleSeq<articleSize :
article = articleList[articleSeq]
#제목
subject = article["subject"]
writeDateTimestamp = article["writeDateTimestamp"]
f.write(subject + "\t" + str(writeDateTimestamp) + "\r")
#마지막 게시글ID
if articleSeq == articleSize-1 :
pageLastArticleId = article["articleId"]
# 0 : 저같은 노답이 있나요? (6214178)
print(str(articleSeq) + " : " + subject + " (" + str(article["articleId"]) + ")")
articleSeq = articleSeq + 1
#page : 1 END
print("page : " + str(page) + " END")
if page == maxPage :
print("last page .. break")
break
f.close()
댓글