Closed evememine closed 2 years ago
테스트 겸 기사 3일치를 수업 코드로 크롤링 문제점
결과물을 확인했더니 예상했던 결과물이 아님 기사 전체가 크롤링되지 않은 것 같고 형식도 이상함
def article(date_, url): reporter = re.compile("[가-힣]{2,4}\s*기자") email = re.compile("[\w._%+-]+@[\w.-]+\.[a-zA-Z]{2,4}") r = requests.get(url, headers= head) bs = BeautifulSoup(r.text) try: rt = bs.find("div", id="newsct_article") text = rt.text.strip() except: return try: text = text[:text.find(rt.select_one("a").text)] except: pass text = re.sub(email, "", text) text = re.sub(reporter, "", text) if not os.path.isdir(date_): os.mkdir(date_) f = open(date_ + "/" + url.split("?")[-1] + ".txt", "w", encoding='utf-8') f.write(text) f.close()
def naver_news(start_date = None, end_date = None): sid2_cate = [259, 258, 261, 771, 260, 310, 263] url = "https://news.naver.com/main/list.nhn?mode=LS2D&mid=shm&sid2={}&sid1=101&date={}&page={}" head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Edg/86.0.622.38'} for date_ in [str(x).replace("-", "")[:8] for x in pd.date_range(start_date, end_date)]: for cate in sid2_cate: r= requests.get(url.format(cate, date_, 200 ), headers= head) bs = BeautifulSoup(r.text, "lxml") #print(x , end=' : ') last_page = bs.find("div", class_='paging').find("strong").text #print ("last page:{}".format(last_page) for page_num in range(1, int(last_page)+1): r2= requests.get(url.format(cate, date_, page_num ), headers= head) bs2 = BeautifulSoup(r2.text, 'lxml') for x in bs2.find("div", class_="list_body newsflash_body").findAll("dt"): article(date_, x.a['href'])
파일 저장시 코드 수정하면 덮어쓰기가 되지 않고 파일 추가 될겁니다. f = open("./" + date_ + "/" + url.split("?")[0].split("/")[-1] + ".txt", "w", encoding='utf-8')
네 정상 작동 확인했습니다!
테스트 겸 기사 3일치를 수업 코드로 크롤링
문제점
결과물을 확인했더니 예상했던 결과물이 아님
기사 전체가 크롤링되지 않은 것 같고 형식도 이상함