plus1250-project / joba-Data

0 stars 1 forks source link

크롤링 관련 이슈 #2

Closed evememine closed 2 years ago

evememine commented 2 years ago

테스트 겸 기사 3일치를 수업 코드로 크롤링

문제점

  1. 시간이 지나치게 오래 걸림
  2. 결과물을 확인했더니 예상했던 결과물이 아님
    기사 전체가 크롤링되지 않은 것 같고 형식도 이상함

    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'])
MaryYoungae commented 2 years ago

파일 저장시 코드 수정하면 덮어쓰기가 되지 않고 파일 추가 될겁니다. f = open("./" + date_ + "/" + url.split("?")[0].split("/")[-1] + ".txt", "w", encoding='utf-8')

evememine commented 2 years ago

네 정상 작동 확인했습니다!