묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
다른 사이트를 크롤링해보려는데 인코딩쪽에 문제가 있는 것 같습니다.
안녕하세요 선생님. 선생님 강의를 듣고 제가 원하는 사이트를 크롤링 해보려는데 인코딩문제가 생기는 것 같습니다. 사이트 주소는 이렇습니다. http://veganfesta.kr/modules/company/company_list.html?mc_code=1013import requests url = "http://veganfesta.kr/modules/company/company_view.html?seq=241&mc_code=1013" headers = { 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'} response = requests.get(url,headers=headers) response.encoding='utf-8' print(response.text)이렇게 코드를 짜봤는데요 결과는이런식으로 나옵니다. 인코딩 문제인가 하였는데response.encoding을 통해 uff-8인것을 확인했습니다.response.status는 200으로 정상이구요 ㅜ뭐가 잘못된 걸까요? 2시간가량 전전긍긍해보았지만 답을 찾지못해 선생님께 질문드립니다..제가 url을 구글이나 네이버로 바꿔 시도를 해보았을때는 잘되었는데 저 사이트로 url을 설정했을때 이렇게 나오네요.. 읽어주셔서 감사하며 답변 부탁드리겠습니다.
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
웹툰 사이트 body 안에가 안불러져옵니다.
<body> 태그 하위<div id="root"> 태그 하위에 실제 사이트 html이비어져서 옵니다.
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
네이버 웹툰을 활용한 BeautifulSoup 강좌에서 인터페이스가 달라졌습나다.
웹 크롤링을 하려 하니까 인터페이스가 완전히 갈아엎어져서 이거 뭐 어떻게 해야할지를 모르겠네요
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
구글 무비 강좌에서요
movies=soup.find_all("div",attrs={'class':'???}) title=movie.find('span',attrs={'class':'???'}).get_text()attrs 값을 못찾겠습니다.
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
네이버 IT뉴스 화면 requets.get 에러가 발생합니다ㅜ
네이버 IT 뉴스 링크를 그냥 크롬이나 사파리를 통해서 접속하면 정상적으로 잘 접속이 됩니다.하지만 requests.get을 사용하면 에러가 발생해 파싱을 정상적으로 하기 힘든 상황입니다.ㅠ셀레니움을 사용하던지 다른 뉴스 페이지를 사용해야할거같습니다.저의 경우는 구글뉴스를 파싱 했습니다.좋은 강의 해주셔서 감사합니다.! import re import requests from bs4 import BeautifulSoup weather_url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%84%9C%EC%9A%B8+%EB%82%A0%EC%94%A8&oquery=%EC%84%9C%EC%9A%B8+%EB%82%A0%EC%8B%9C&tqi=h%2B4nksprvTVssQv3%2BkdssssstAZ-264690" news_url = "https://www.google.com/search?q=%EA%B5%AC%EA%B8%80%EB%89%B4%EC%8A%A4&rlz=1C5CHFA_enKR979KR979&source=lnms&tbm=nws&sa=X&ved=2ahUKEwio8ZP_jIP9AhXnm1YBHfaRBAUQ_AUoAXoECAEQAw&biw=1057&bih=976&dpr=1" english_url = "https://www.hackers.co.kr/?c=s_eng/eng_contents/I_others_english&keywd=haceng_submain_lnb_eng_I_others_english&logger_kw=haceng_submain_lnb_eng_I_others_english" headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", "Accept-Language":"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7" } def create_soup(url): res = requests.get(url, headers=headers) res.raise_for_status() return BeautifulSoup(res.text, "lxml") def get_weather_info(): soup = create_soup(weather_url) current_temp = soup.find("div", attrs={"class": "temperature_text"}).get_text().strip().split()[-1][2:] compare = soup.find("p", attrs={"class": "summary"}).get_text() summary_list = soup.find("dl", attrs={"class": "summary_list"}).get_text().strip() dust = soup.find_all("li", attrs={"class": "item_today level1"})[0].get_text().strip() micro_dust = soup.find_all("li", attrs={"class": "item_today level1"})[1].get_text().strip() uv = soup.find("li", attrs={"class": "item_today level2"}).get_text().strip() sunset = soup.find("li", attrs={"class": "item_today type_sun"}).get_text().strip() rain_ratio = soup.find("li", attrs={"class": "week_item today"}).find_all("span", attrs={"class": "weather_left"}) rain_ratio_am = rain_ratio[0].get_text().strip() rain_ratio_pm = rain_ratio[1].get_text().strip() print("현재 기온 : {}".format(current_temp)) print(compare) print(summary_list) print("{} / {} / {} / {}".format(dust, micro_dust, uv, sunset)) print("강수 확률 : {} / {}\n".format(rain_ratio_am, rain_ratio_pm)) def get_news_headline(): soup = create_soup(news_url) headlines = soup.find_all("div", attrs={"class": "mCBkyc ynAwRc MBeuO nDgy9d"}, limit=6) urls = soup.find_all("a", attrs={"class": "WlydOe"}, limit=6) for idx, headline in enumerate(headlines): print(headline.get_text()) print(urls[idx]["href"] + "\n") def get_eng_sentence(): soup = create_soup(english_url) expression = soup.find_all("b", attrs={"class": "conv_txtTitle"}) sentences = soup.find_all("div", attrs={"id": re.compile("conv_kor_t\d*")}) print("\n< 오늘의 영어 회화 >") print("한글 표현") print("* " + expression[0].get_text()) for sentence in sentences[0:len(sentences)//2]: print(sentence.get_text().strip()) print("\n영어 표현") print("* " + expression[1].get_text()) for sentence in sentences[len(sentences) // 2:]: print(sentence.get_text().strip()) def main(): get_weather_info() get_news_headline() get_eng_sentence() if __name__ == "__main__": main()
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
23년 2월 7일, 다음 부동산 화면이 다름
23년 2월 7일 현재, 강의해주신 다음부동산의 화면이 상이해 네이버 부동산을 이용해서 비슷하게 따라해봤습니다.import requests from bs4 import BeautifulSoup url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%86%A1%ED%8C%8C+%ED%97%AC%EB%A6%AC%EC%98%A4%EC%8B%9C%ED%8B%B0+%EB%A7%A4%EB%AC%BC&oquery=%EC%86%A1%ED%8C%8C+%ED%97%AC%EB%A6%AC%EC%98%A4%EC%8B%9C%ED%8B%B0+%EB%A7%A4%EB%A7%A4&tqi=h%2B4thwprvmZss6uUL7ossssstOZ-299895" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") houses = soup.find_all("tr", attrs={"class": {"_land_tr_row"}}) for num, house in enumerate(houses): info = house.get_text().split() print(f"=========={num+1}번 매물==========") print(f"매매 방식 : {info[0]}") print(f"매물 위치 : {info[1]}") print(f"매물 이름 : {info[2]}") print(f"동 : {info[3][:4]}") print(f"거래 부동산 : {info[3][4:]}") print(f"면적 : {info[4]}") print(f"가격 : {info[5]} 만원") print(f"층 : {info[-2]}")