본문 바로가기
반응형

● 크롤링, 자동화/BeautifulSoup33

[에러해결] ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) 헤더를 추가해줌으로서 해결 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} res = requests.get('',headers=headers ) 2021. 5. 19.
[BeautifulSoup] Dummy 지정(soup.select)할 때, 추출대상을 모두 포함하는 부모태그를 지정해야한다. 추출할 대상은 다음 하늘색 밑줄 친 제목들! 참고로 하늘색 텍스트들은 .list_txt > li > a 태그에 속해있다. 이를 select로 지정하기 위해 한 묶음으로 dummy를 지정해보았다. dummy = soup.select(".list_txt") 하지만 이렇게 지정하면 원하는 기사 제목들이 나오지 않는다. 구체적으로 지정해야만 한다. 추출 대상(타이틀제목, 링크)이 모두 포함된 부모 태그를 dummy로 지정해야만 한다. 즉, dummy = soup.select('.list_txt > li') 이렇게 해야만 정상적으로 나온다. 2021. 5. 19.
[BeautifulSoup에러] ('Connection aborted.', ConnectionResetError(10054, '현재 연결은 원격 호스트에 의해 강제로 끊겼습니다', None, 10054, None)) ('Connection aborted.', ConnectionResetError(10054, '현재 연결은 원격 호스트에 의해 강제로 끊겼습니다', None, 10054, None)) 소켓 연결 실패 시에 생기는 에러이다, header를 추가하는 방식으로 해결하면 된다. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} res = requests.get('URL', headers=headers) 2021. 5. 19.
requests와 urllib.request의 차이는 뭘까? requests urllib.request 데이터를 보낼 때 딕셔너리 형태로 보낸다 데이터를 보낼 때 인코딩하여 바이너리 형태로 보낸다 없는 페이지를 요청해도 에러를 띄우지 않는다 없는 페이지를 요청해도 에러를 띄운다 requests와 urllib.request 간에 큰 차이가 없어보입니다만 대체로 requests를 많이 쓰는 것 같네요. 저도 requests.get() 방법이 HTTP method와 연관되어 있으니 직관적으로 이해하기 쉽다고 느꼈습니다. 참고로 requests.get()을 통해 받아온 객체 안에 무엇이 있는지 보기 위해선 아래 명령어를 사용해서 확인하면 됩니다. dir(req) # req.text https://moondol-ai.tistory.com/238 파이썬 크롤링 request.. 2021. 5. 16.
크롤링 과정에서 나타난 HTTPSConnectionPool(URL, port=443) 에러 res = requests.get('URL') 위 코드를 입력했더니 에러가 발생했다. 에러명 HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url: /empSpt/empNews/retrieveEmpNewsList.do?pageIndex=1&sortOrderField=dtm&sortOrderBy=DESC&newsId=&searchRegionCd=&searchStdt=&searchEndt=&searchKwrd=&pageUnit=50 (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_.. 2021. 5. 15.
datetime 모듈로 날짜/시간 처리하기 https://www.daleseo.com/python-datetime/ [파이썬] datetime 모듈로 날짜/시간 처리하기 Engineering Blog by Dale Seo www.daleseo.com 2021. 5. 15.
[문제해결] csv 파일의 한글이 깨진다면? (csv 포맷 변경, 통일시키는 방법) 분명히 utf-8로 인코딩해서 csv파일을 저장했는데이렇게 한글이 깨지고 있다. 하지만 메모장으로 보면 또 잘나온다. 해결방법은 2가지가 있다.1. csv파일을 ANSI 포맷으로 바꿔서 저장하기엑셀로 파일 열기 > 다른이름으로 저장 > 저장 버튼 옆의 인코딩 > ANSI > 저장 2. 엑셀에서 파일을 열때 ANSI가 아닌 utf-8로 열기엑셀 열기 > 상단의 데이터 > 텍스트 클릭 > 한글 깨지는 csv 파일 선택 유니코드 선택 결과화면 2021. 5. 4.
[beautifulsoup] 네이버 모바일 검색 결과를 크롤링한 뒤, csv 파일로 저장하자. 1. 모바일 HTML 태그를 살펴보자 제목이 a태그에 속해있다 2. URL을 살펴보자 URL을 보면 검색어가 쿼리스트링 형태로 나타나있다. 이 URL을 그대로 가져와 복붙하면 다음처럼 아스키코드로 나타난다. 검색어는 query= 문 뒤에 나오며 아스키 코드로 나타난다는 점에 주목하자. query값에 search 변수를 삽입하여 입력한 검색어에 해당되는 데이터를 불러오도록 만들자. 여기서! URL은 아스키코드 형태로 나타나야하므로 아스키코드로 변환시켜주는 quote_plus를 활용하여 quote_plus(search) 를 입력하자. 3. 크롤링 시작하기 html 변수 = 링크를 읽어들인다. soup 변수 = html태그를 저장 html 변수에서 html만을 저장한다. total 변수 = 클래스명 api_t.. 2021. 5. 4.
크롤링 후 불필요한 문자들, 특수문자들 제거하기 livedata.tistory.com/17 Python(파이썬)크롤링 한 파일에 불필요한 문자 제거(Web Cralwer) -3 3. 전 시간 Python(파이썬) 특정 단어포함하는 신문기사 웹 크롤러 만들기(Web Cralwer) -1 Python(파이썬) 특정 단어포함하는 신문기사 웹 크롤러 만들기(Web Cralwer) -2 여기 까지 출력 되는 것을 해보았습 livedata.tistory.com 2021. 2. 1.
2차원 리스트를 1차원 리스트로 바꾸자 lar542.github.io/Python/2019-07-11-python3/ Python - 2차원 리스트를 1차원 리스트로 만드는 다양한 방법 파이썬을 파이썬답게 파이썬에서 2중 리스트를 flatten하게 만들기 2차원 리스트를 1차원 리스트로 만드는 다양한 방법 my_list = [[1, 2], [3, 4], [5, 6]] # sum 함수 sum(my_list, []) # itertools.chain과 unpacking : 1 lar542.github.io 2021. 2. 1.
[잔재미코딩] [오류/해결] ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end import requests from bs4 import BeautifulSoup headers = {'UserAgent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} url = 'https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=105' 까지는 정상적으로 실행되지만 하단 코드 실행시 오류 발생. res = requests.get(url, headers=headers) ConnectionError: ('Connection aborted.', RemoteDisconnected('Remot.. 2021. 2. 1.
[잔재미코딩] [복습] naver datalab 크롤링할 URL과 기본 셋팅 import requests from bs4 import BeautifulSoup as bs headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} url = 'https://datalab.naver.com/keyword/realtimeList.naver?where=main' res = requests.get(url,headers=headers) soup = bs(res.content, 'html.parser') 크롤링 대상 위 대상을 find_all로 찾아보자 1순위부터 후순위 .. 2021. 2. 1.
[나도코딩] 파이썬 코딩 무료 강의 (활용편3) - 웹 크롤링? 웹 스크래핑! 4. find_all, for 문 활용 1-1 네이버 웹툰 전체목록 가져오기 import requests from bs4 import BeautifulSoup url = "https://comic.naver.com/webtoon/weekday.nhn" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") class : "title"인 모든 엘리먼트를 찾자 # class : "title"인 모든 엘리먼트를 찾자 # find는 그 조건에 해당되는 첫번째 엘리먼트만 찾음 # find_all은 조건에 해당되는 모든 엘리먼트 찾음 cartoons = soup.find_all("a",attrs={"class":"title"}) for cartoon .. 2020. 8. 29.
[나도코딩] 파이썬 코딩 무료 강의 (활용편3) - 웹 크롤링? 웹 스크래핑! 3 : attrs, find, class, sibling, siblings 10. 웹툰 크롤링 : attrs, find, class !pip install beautifulsoup4 # 구글 분석 파서 !pip install lxml import requests from bs4 import BeautifulSoup url = "https://comic.naver.com/webtoon/weekday.nhn" res = requests.get(url) res.raise_for_status() # 가져온 html문서(res.text)를 lxml파서를 통해 BS객체를 만든 것 soup = BeautifulSoup(res.text, "lxml") print(soup.title) print(soup.title.get_text()) # 태그뺴고 텍스트만 출력 결과 네이버 만화 > 요일별 웹.. 2020. 8. 28.
[나도코딩] 파이썬 코딩 무료 강의 (활용편3) - 웹 크롤링? 웹 스크래핑! 2 : User Agent 9.User Agent 헤더정보에 따라 스마트폰용, 데스크탑용 페이지가 달라진다. UserAgent를 바꾸면 막힌 URL도 뚫을 수 있다. 404이어도 파일을 가져오니까 일단 #res.raise_for_status()를 주석처리하고 진행한다. 그리고 해당 html 파일을 보면 코드가 짧고, 외계어가 쓰여진 것을 확인할 수 있다. 브라우저에 따라 UserAgent값이 다르다. 크롬으로 User agent string을 입력했을 때 익스플로러로 ~ 입력했을 때 크롬 브라우저에서 작업하므로 크롬용 UserAgent를 사용하자 headers코드를 추가해서 UserAgent를 넣어주자. 이제 관련 ~html파일을 열어보면 정상적으로 받아진 것을 볼 수 있다. 10. 네이버 웹툰 크롤링 2020. 8. 27.
[나도코딩] 파이썬 코딩 무료 강의 (활용편3) - 웹 크롤링? 웹 스크래핑! 1 : HTML, X-Path, Request, re(정규식) 크롤링 : 웹에서 허용된 링크를 따라가면서 마주잡이로 끌어옴 스크래핑 : 필요한 것만 뽑는 것 HTML : 집의 골격 CSS : 인테리어, 예쁘게 JS : 내부 생활, 생동감있게 웹 스크래핑을 보면서 반드시 HTML의 골격, 구조를 이해해야만 한다. HTML에 대해 알아보자 Hyper Text Markup Language X Path에 대해 알아보자 unique한 값으로 간편하게 찾는 경로를 의미함 1. 전체 경로를 써서 찾는 경우 왜냐? 비슷한 태그, 엘리먼트 중 어떤 것을 지칭하는지 명확하게 하기 위함 위처럼 특정하기 위해서 길게 쓰는 경우도 있지만 2. 클래스,id 속성 등의 unique한 특징으로 찾는 경우 unique한 값으로 줄여서 쓰는 경우도 있다. 일반적으로는 id, class속성으로 특징.. 2020. 8. 26.
[잔재미코딩] 7. 한빛미디어 페이지 실전 크롤링 쿠키와 세션 찾기 2020. 3. 12.
[잔재미코딩] 6. 로그인이 필요한 페이지 크롤링하기 로그인이 되어야만 볼수있는페이지에선 일반적인 방식으론 크롤링이 안된다. 그럼어떻게해야할까? 우선 쿠키와 세션에 대해 알아야한다. 클라이언트에서 요청할때 로그인할때는 쿠키와 세션이 함께 들어가서 요청된다. 아참! 이때 HTTP프로토콜방식으로 주고받는데(요청을할때 요청을만드는 포맷이 있고 응답도 특별한 포맷이있다) 이 때의 기본 포맷이 헤더와 바디 로그인이 필요할경우 헤더에 특별한 정보(쿠키/세션)를 포맷에 맞춰 요청한다. 아이디정보를 자기 피씨, 웹브라우저안에 저장가능 그리고 해당 웹페이지의 URL을 전송할 때 해당 아이디를 헤더에 넣어서 보냄(이를 쿠키라고함.) 쿠키란 아이디와 값처럼 구별할 수 있는 정보를 자기피씨안에 넣은상태. 특히 웹에서 저장관리하는 파일안에 있음 서버는 요청받은 헤더부분을 파악하고.. 2020. 3. 10.
반응형