안녕하세요. ch 2-2 User Agent Data 변경하는법 강의에서 10:00, 10:09 에 '내 눈으로 본것만 믿읍시다' 자막 부분 이해가 안갑니다. Not?A_Brand는 version 끝자리 숫자로 바뀌었네요 이게 무슨 뜻인가요? version last string 값을 넣어주시죠 version 110 되었을때는 0이 될지 10이 될지 그거는 그때 확인해야할듯함 이거는 무슨 뜻일까요?? 강의 보다보면 이렇게 추가적으로 중간중간 자막 달아주신것들이 이해가 안되는 것들이 많습니다. 맥락을 충분히 설명 안해주시고 말씀하시는 느낌이 든달까... 조금만 더 자세히 설명해주시면 감사하겠습니다 ㅜㅜ --------------- 추가로, 이 강의에선 undetected_chromedriver 를 사용하지 않고 일반 웹드라이버를 사용하셨는데 undetected 드라이버랑 함께 사용하지 않으신 이유가 뭘까요??
import requests from bs4 import BeautifulSoup url = "https://search.naver.com/search.naver?where=view&sm=tab_jum&query=" keyword = input("검색어를 입력하세요: ") url = url + keyword print(url) #개발자 도구 > 네트워크 > www.naver.com > 요청 헤더 > user-gent headers = { "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } req = requests.get(url, headers=headers) html = req.text soup = BeautifulSoup(html, "html.parser") # 게시물별 view 구역 total_area = soup.select(".view_wrap") rank_num= 1 for area in total_area: ad = area.select_one(".link_ad") if ad: continue print(f"<<<{rank_num}>>>") title = area.select_one(".title_area") name = area.select_one(".name") href = area.select_one(".title_link") print(title.text) print(name.text) # print(title["href"] print(href["href"]) print() rank_num += 1 <에러 문구> line 41, in <module> print(title["href"]) File "/User/opt/anaconda3/envs/edu/lib/python3.9/site-packages/bs4/element.py", line 1573, in getitem return self.attrs[key] KeyError: 'href' 안녕하세요, 수업 잘 듣고 있습니다. 저도 블로그 링크를 바로 가져오고 싶어서 print(title["href"]로 가져오려 했으나 keyError가 발생합니다. 우선 대안으로, href 변수를 반들고 따로 링크만 가져올 수 있는 코드를 추가하긴 하였으나 왜 키 에러가 발생하여 print(title["href"]로 링크를 바로 못 가져 오는 것인지가 궁금합니다.
강의 녹화 시점때와 다르게 현재 뷰 메뉴 태그값들이 모두 바뀐것같아서 강사님 강의에 따라 위 코드를 작성하였는데 v['href']를 사용하면 오류가 나와요... v.select _one('a')['href'] 을 입력하면 #으로 나오고요...확인좀부탁드릴게여.. # 라이브러리 호출 import requests from bs4 import BeautifulSoup # 검색어 입력 search_word = input('검색어를 입력해주세요\t:\t') # 크롤링 페이지 입력 target_url = 'https://search.naver.com/search.naver?where=view&sm=tab_jum&query=' + search_word print(f'접속페이지\t:\t{target_url}') # 데이터 요청 req_get_url = requests.get(target_url) get_html = req_get_url.text parser_soup = BeautifulSoup(get_html, 'html.parser') # select를 활용하여 태그값에 해당하는 모든 값을 리스트화로 가져옴 raw_data = parser_soup.select('div.view_wrap') for index, v in enumerate(raw_data): index += 1 user_data = v.select_one('a.name').text #▶▷▶▷▶▷ 뷰 게시글 작성자 추출 try: #제목 태그를 의미하는 .title_link._cross_trigger 가 None이면, 제목을 의미하는 다른 태그인 .title_link 로 데이터 추출. 그 외 다른 태그값으로 인하여 None 발생을 통한 오류가 생기면 '제목없음'으로 오류 예외처리 진행 title_data = v.select_one('.title_link._cross_trigger').text.replace('\n','').replace('\t',' ') #▶▷▶▷▶▷ 뷰 게시글 제목① 추출 if title_data == None: title_data = v.select_one('.title_link').text.replace('\n','').replace('\t',' ') #▶▷▶▷▶▷ 뷰 게시글 제목② 추출 except: title_data = '제목없음' print(f'{index} 번째글\n사용자명\t:\t{user_data}\n게시글 제목\t:\t{title_data}')
안녕하세요, 수업 잘 듣고 있습니다. 수업 녹화 당시와 현재와 웹페이지 클래스 명이 달라져서 작성자는 제 생각엔 .user_info 클래스를 사용하는 것 같아 사진과 같이 코드를 작성하고 실행하였으나 출력문이 조용(?)합니다. 강의 영상을 보면 게시글 제목과 작성자 명이 함께 나오는데 제 코드는 "검색어를 입력하세요:" 외에 뜨는 출력 문이 없어 어떤 것이 문제 인지 문의 드립니다.
안녕하세요. 수업 잘 듣고 있습니다. 다름이 아니라 네이버가 리액트를 메인에 적용한 듯 한데요혹시 제가 코드를 잘 못 넣은 건지 살펴봐 주실 수있는지요아직 다른 강좌는 듣지 않은 상태인 점 양해 바랍니다.좋은 하루되세요. import requests from bs4 import BeautifulSoup url = "https://naver.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } req = requests.get(url, headers=headers) html = req.text soup = BeautifulSoup(html, "html.parser") print(soup.title)
안녕하세요, 잘 듣고 있습니다. 네이버 view탭 검색 결과 크롤링1을 보고, 따라하고 있습니다. 강사님 녹화하실 당시의 네이버와 현재 네이버 페이지가 구조가 좀 달라져서 제 나름대로 적용을 하려고 했으나 이해가 안되는 부분이 있어 문의 드립니다. 강사님이 쓰신 class명이 현재는 안 쓰이는 듯하여 현재 페이지 기준에 맞춰 class명을 작성한 후 출력을 했는데 '[]' 이렇게 빈 리스트 값이 나타났는데 왜 그런지 모르겠습니다. 위 내용이 궁금하여 문의 드립니다. result = soup.select(".title_link.cross_trigger") print(result)
강의 들으며 똑같이 코드를 작성했습니다. 다만, 로캣배송 badge_rocket 까지 작성했을 때, 막상 홈페이지에 나와있는 순위와 비교를 하며 보니 일치하지 않고 순서가 뒤죽박죽 되어 나와 있습니다. 또한 화면 상에서는 광고 표시가 없지만, 막상 html을 살펴보면 search-product search-product__ad-badge라고 되어 있는 경우도 있습니다. 혹 새로고침 할 때 마다 조금씩 바뀌어 제공하는 것 때문에 그런 것인지, 코딩 창과 홈페이지를 동시에 새로고침 해 보아도 순위가 정확하지 않습니다. 이런 상황에서 크롤링이 정확하게 되고 있는 지 어떻게 알 수 있나요?
Copy Selector를 이용하여 받는사람 구역의 Selector를 복사해서 가져왔으나 코드 실행 중 에러가 발생합니다. no such element라는 것으로 보아 Selector를 못받는거 같은데 어떻게 해야될까요? driver.find_element(By.CSS_SELECTOR,"#recipient_input_element").send_keys("xxxx@naver.com") time.sleep(0.5) Traceback (most recent call last):File "c:\Excel\02. 데스크탑 자동화\2.네이버 로그인 자동화.py", line 44, in <module>driver.find_element(By.CSS_SELECTOR,"#recipient_input_element").send_keys("xxxx@naver.com")^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "C:\Users\thkim\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 742, in find_elementreturn self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "C:\Users\thkim\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 348, in executeself.error_handler.check_response(response)File "C:\Users\thkim\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_responseraise exception_class(message, screen, stacktrace)selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#recipient_input_element"}(Session info: chrome=120.0.6099.217); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exceptionStacktrace:GetHandleVerifier [0x00007FF675932142+3514994](No symbol) [0x00007FF675550CE2](No symbol) [0x00007FF6753F76AA](No symbol) [0x00007FF675441860](No symbol) [0x00007FF67544197C](No symbol) [0x00007FF675484EE7](No symbol) [0x00007FF67546602F](No symbol) [0x00007FF6754828F6](No symbol) [0x00007FF675465D93](No symbol) [0x00007FF675434BDC](No symbol) [0x00007FF675435C64]GetHandleVerifier [0x00007FF67595E16B+3695259]GetHandleVerifier [0x00007FF6759B6737+4057191]GetHandleVerifier [0x00007FF6759AE4E3+4023827]GetHandleVerifier [0x00007FF6756804F9+689705](No symbol) [0x00007FF67555C048](No symbol) [0x00007FF675558044](No symbol) [0x00007FF6755581C9](No symbol) [0x00007FF6755488C4]BaseThreadInitThunk [0x00007FFA3FB2257D+29]RtlUserThreadStart [0x00007FFA40FEAA58+40]
query = "강아지옷" userDisplay = 15 option=0 searchBy = 1 # searchdate = "all" # all or 1w encoding_query = parse.quote(query,encoding="MS949") link = f"https://cafe.naver.com/joonggonara?iframe_url=/ArticleSearchList.nhn%3Fsearch.clubid=10050146%26search.media=0%26search.searchdate={searchdate}%26search.defaultValue=1%26search.exact=%26search.include=%26userDisplay={userDisplay}%26search.exclude=%26search.option={option}%26search.sortBy=date%26search.searchBy={searchBy}%26search.searchBlockYn=0%26search.includeAll=%26search.query={encoding_query}%26search.viewtype=title%26search.page={page_idx}" 이번 강의는 순서도 바뀐 것 같고 건너띄기 된 느낌입니다..이 부분 내용이 생략이 된 것 같아서요. 저기 link 주소랑 관련된 저 부분들 분석 하는 방법 궁금합니다. 그리고 FLAG 쓰셨는데.. 이해가 잘 안되서요.. 그걸 이용하는 방법을 알려주신 건지.. 저기에 꼭 써야하는건지 잘 이해가 안가네요. if에 break 걸어 놓으셨으니 FLAG를 안 써도 될 것 같아서 여쭤봅니다. ( keyword.py , menu.py 둘 다요)
3분만에 1000명 DB 확보하는 DB 추출기 프로그램 개발 강의 (셀레니움 + pyqt + gui + exe 프로그램)
안녕하세요^^ 공개된 이웃이 없을 경우에 다음 블로거로 넘어가지 않고 프로그램이 정지(?) 돼서요. 결국엔 사용을 못하네요. 공개된 이웃이 없어도 계속 진행돼서 다음 블로거로 넘어가는 방법을 알 수 있을까요? 그리고 이건 수업 질문은 아닌데요. pyinstaller로 exe 만들었는데 윈도우 백신에 바이러스로 잡히더라고요.. 이거 해결 방법은 어디서 찾을 수 있을지 궁금합니다.