inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 기본편

웹 스크래핑 코드에 대한 질문입니다.

232

최성환

작성한 질문수 2

0

# 2. main function def crawler(maxpage, query, s_date, e_date, press): press = int(press_name) s_from = s_date.replace(".", "") e_to = e_date.replace(".", "") page =1 maxpage_t = (int(maxpage)-1)*10+1 f = open("D:/10.MyPython_work/nlp/web_crawl/contents_text.csv", 'w', encoding = 'utf-8') wr = csv.writer(f) wr.writerow(['years', 'company', 'title', 'contents', 'link']) while page < maxpage_t: url = 'https://search.naver.com/search.naver?where=news&query=' + query + '&sort=0&ds=' + s_date + '&de=' + e_date + '&news_office_checked='+ press + '&nso=so%3Ar%2Cp%3Afrom' + s_from + 'to' + e_to + '%2Ca%3A&start=' + str(page) # ua = UserAgent() # headers = {'User-Agent' : ua.random} req = requests.get(url) cont = req.content soup = BeautifulSoup(cont, 'html.parser') for urls in soup.select("a.info"): try: if urls["href"].startswith("https://news.naver.com"): news_detail = [] ua = UserAgent() headers = {"User-Agent" : ua.random} breq = requests.get(urls["href"], headers = headers) bsoup = BeautifulSoup(breq.content, 'html.parser') title = bsoup.select('h3#articleTitle')[0].text news_detail.append(title) pdate = bsoup.select('.t11')[0].get_text()[:11] news_detail.append(pdate) _text = bsoup.select('#articleBodyContents')[0].get_text().replace('\n', " ") btext = _text.replace("// flash 오류를 우회하기 위한 함수 추가 function _flash_removeCallback() {}", "") news_detail.append(btext.strip()) news_detail.append(urls["href"]) pcompany = bsoup.select('#footer address')[0].a.get_text() news_detail.append(pcompany) wr.writerow([news_detail[1].replace(',',''), news_detail[4].replace(',',''), news_detail[0].replace(',',''), news_detail[2].replace(',',''), news_detail[3].replace(',','')]) except Exception as e: continue page += 10 print('Completed!') f.close() def main(): maxpage = input("검색 할 페이지수: ") query = input("검색어: ") s_date = input("시작 날짜(YYYY.MM.DD): ") e_date = input("종료 날짜(YYYY.MM.DD): ") medium = {'경향신문': '1032', '국민일보': '1005', '동아일보': '1020', '문화일보': '1021', '중앙일보': '1025', '한겨레': '1028', '한국경제': '1015', 'KBS': '1056', 'MBC': '1214'} press_name = medium.get(input("언론사 :")) crawler(maxpage, query, s_date, e_date, press) main()
 
강의와 구글 검색으로 네이버 뉴스를 신문사 선택하여 스크레핑할 수 있게 만들려고 작성한것입니다. 그런데
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_14200/631169102.py in <module>
     70     crawler(maxpage, query, s_date, e_date, press)
     71 
---> 72 main()

~\AppData\Local\Temp/ipykernel_14200/631169102.py in main()
     68     press_name = medium.get(input("언론사 :"))
     69 
---> 70     crawler(maxpage, query, s_date, e_date, press)
     71 
     72 main()

NameError: name 'press' is not defined

이런 에러메세지가 나오는데요.. 이건 어떻게 해결할 수 있을가요?

python 웹-크롤링

답변 1

0

스타트코딩

안녕하세요.

코딩을 가장 쉽게 알려주는 크리에이터, 스타트코딩입니다.

 

자, 에러 메시지를 잘 한번 해석해 볼까요?

NameError: name 'press' is not defined
-> press 라는 이름이 정의되지 않았다

 

변수를 아직 만들지 않았는데 사용했기 때문에 나는 오류 입니다.

press 변수가 있는지 확인해 보세요 ^^

 

0

최성환

네. 답변 감사합니다.

추가적으로 main function def  crawler 함수에 press 변수를 넣었는데. def main()에서 press 변수가 정의되지 않아서 일까요? 정의되지 않았다는 것이 어디에서 정의되지 않았다는 것일까요?

0

스타트코딩

70번재 줄 press가 정의 되지 않았습니다 ^^

0

최성환

와우. 감사합니다.

더 고민하고, 수정을 해보겠습니다.

혹시 코드 수정을 하다가 막히거나 질문이 생기면 더 질문해도 될까요?

급한 마음에 너무 많은 코드 줄을 붙여 넣고 질문을 하고나서 너무 죄송한 감이 밀려와서 늦게나마 여쭤봅니다.

 

0

스타트코딩

네 ^^ 

대신 오류가 생기면 적어도 1~2시간은 충분히 고민해 보고 질문 주세요ㅎㅎ

구글 검색으로 오류를 스스로 해결하는 과정이 진짜 실력이 됩니다.

 

그리고, 소스코드를 보기 좋게 올려 주시면 감사하겠습니다 ^^ 

0

최성환

네. 감사합니다.

 

소스코드 올리는건 처음이라

저번에 올려진거 보고 지저분해서 깜짝 놀랐습니다. 

혹시 어떻거 올리면 되나요?

텍스트 파일로 올릴까요? 아님 쥬피터 파일로 올릴까요?

0

스타트코딩

복사해서 붙여넣으면 보통 정상적으로 출력되는데

잘 안된다 싶으면, 텍스트 파일로 한번 옮겼다가 복사 하던지

아니면 스크린샷으로라도 찍어서 올려 주세요 ㅎㅎ

Live server 를 이용 해보고 싶은데 확장메뉴 설치가 막혀 있어요

0

89

2

'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)

0

54

1

import requests from bs4 import BeatifulSoup 이 단계에서 안 되네요

0

108

2

requests 관련 질문

1

151

2

설치 관련

0

139

2

vs code 결과출력이 안됩니다

0

165

1

크롤링 관련 질문입니다

0

225

2

word wrap 체크 후에도 콘솔 한줄로 출력되는현상

0

198

1

주피터에서 pip오류가 계속납니다

0

1107

3

강의 "requests, Beautifulsoup4 사용법 빠르게 알아보기"에서 질문이있습니다.

0

182

2

네이버쇼핑 검색창 넘어가기전 팝업창이 안사라져요

0

381

1

html주소를 다른 컴터에서도 접속하기

0

253

2

pandas 설치하는데 오류가 나서요

0

2754

1

실행오류

0

227

1

네이버쇼핑 무한스크롤 안되시는분들 모바일네이버로 실습해보세요

0

274

1

뉴스 페이지에 페이지 번호가 없는데 어떻게 가져오나요?

0

247

2

네이버 쇼핑에 팝업창이 뜨기 시작했어요 도와주세요 ㅠㅠ

0

736

3

셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.

0

676

2

낮은 가격순을 클릭하는 문을 추가하고싶습니다.

0

309

2

pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램

0

3437

2

이런오류는 어떤 오류인가요

0

667

1

창이 두개떠요/쇼핑검색도 안되요 ㅜ

0

337

2

약간 변태(?)같지만 해당 코드를 깔끔하게 함수로 리팩토링해보았습니다

0

342

2

과제 답안을 보지않고 스스로 구글링해서 만든 웹 크롤링 프로그램(10페이지 단위) 코드입니다.

0

772

2