대학교 때 진행한 작은 프로젝트 기록입니다.
더보기
학교에서 인공지능 특화 실무형 창의 소프트웨어 경진대회를 시행한다는 공고를 보았다.
그래서 친구들과 함께 개발톤 부분을 참가하기로 했다.
주제는 인공지능 및 응용기술을 활용한 sw개발이고
우리는 'AI댓글필터링'을 만들기로 기획하였다.
이에 첫 번째로 해야 할 것이 뉴스에 있는 댓글들을 크롤링해오는 것인데
해당 코드로 댓글들을 데이터로 따올 수 있다.
# 라이브러리를 로드합니다.
from bs4 import BeautifulSoup
import requests
import re
import sys
import pprint
# 댓글을 넣을 빈 리스트를 생성합니다.
List=[]
# 네이버 뉴스 url을 입력합니다.
url="https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=104&oid=008&aid=0004457768"
oid=url.split("oid=")[1].split("&")[0]
aid=url.split("aid=")[1]
page=1
header = {
"User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
"referer":url,
}
while True :
c_url="https://apis.naver.com/commentBox/cbox/web_neo_list_jsonp.json?ticket=news&templateId=default_society&pool=cbox5&_callback=jQuery1707138182064460843_1523512042464&lang=ko&country=&objectId=news"+oid+"%2C"+aid+"&categoryId=&pageSize=20&indexSize=10&groupId=&listType=OBJECT&pageType=more&page="+str(page)+"&refresh=false&sort=FAVORITE"
# 파싱하는 단계입니다.
r=requests.get(c_url,headers=header)
cont=BeautifulSoup(r.content,"html.parser")
total_comm=str(cont).split('comment":')[1].split(",")[0]
match=re.findall('"contents":([^\*]*),"userIdNo"', str(cont))
# 댓글을 리스트에 중첩합니다.
List.append(match)
# 한번에 댓글이 20개씩 보이기 때문에 한 페이지씩 몽땅 댓글을 긁어 옵니다.
if int(total_comm) <= ((page) * 20):
break
else :
page+=1
# 여러 리스트들을 하나로 묶어 주는 함수입니다.
def flatten(l):
flatList = []
for elem in l:
# if an element of a list is a list
# iterate over this list and add elements to flatList
if type(elem) == list:
for e in elem:
flatList.append(e)
else:
flatList.append(elem)
return flatList
# 리스트 결과입니다.
comments = flatten(List)
# 리스트 출력
for comment in comments:
print(comment)
URL부분을 원하는 기사로 바꾸게 되면 해당 댓글들을 출력한다.
728x90
'프로그래밍 > Crawling' 카테고리의 다른 글
[WebCrawling] 네이버 뉴스 섹션별 토픽 기사 크롤링 2022.ver (0) | 2022.08.03 |
---|---|
[WebCrawling] 네이버 뉴스 섹션 토픽 크롤링 2022.ver (0) | 2022.08.03 |
[WebCrawling] 네이버 뉴스 메뉴 크롤링 2022.ver (0) | 2022.08.03 |
[WebCrawling] 웹 크롤링 기본 개념 및 문법 (BeautifulSoup사용법) (0) | 2022.08.02 |
[WebCrawling] 크롤링 결과데이터 csv파일로 저장하기 (0) | 2020.10.10 |