웹 스크래핑 코드에 대한 질문입니다.
232
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
이런 에러메세지가 나오는데요.. 이건 어떻게 해결할 수 있을가요?
답변 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 를 이용 해보고 싶은데 확장메뉴 설치가 막혀 있어요
'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)
import requests from bs4 import BeatifulSoup 이 단계에서 안 되네요
requests 관련 질문
설치 관련
vs code 결과출력이 안됩니다
크롤링 관련 질문입니다
word wrap 체크 후에도 콘솔 한줄로 출력되는현상
주피터에서 pip오류가 계속납니다
강의 "requests, Beautifulsoup4 사용법 빠르게 알아보기"에서 질문이있습니다.
네이버쇼핑 검색창 넘어가기전 팝업창이 안사라져요
html주소를 다른 컴터에서도 접속하기
pandas 설치하는데 오류가 나서요
실행오류
네이버쇼핑 무한스크롤 안되시는분들 모바일네이버로 실습해보세요
뉴스 페이지에 페이지 번호가 없는데 어떻게 가져오나요?
네이버 쇼핑에 팝업창이 뜨기 시작했어요 도와주세요 ㅠㅠ
셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.
낮은 가격순을 클릭하는 문을 추가하고싶습니다.
pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램
이런오류는 어떤 오류인가요
창이 두개떠요/쇼핑검색도 안되요 ㅜ
약간 변태(?)같지만 해당 코드를 깔끔하게 함수로 리팩토링해보았습니다
과제 답안을 보지않고 스스로 구글링해서 만든 웹 크롤링 프로그램(10페이지 단위) 코드입니다.