왜 스크랩 뉴스 기사?
전문 분야의 최신 뉴스 또는 관심의 특정 주제에 대해 업데이트 할 수 있습니다. 뉴스 웹 사이트를 개설하는 전통적인 방법, 관심의 필드를 입력, 모든 뉴스 피드를 통해 스크롤, 다시 동일한 링크를 열고, 별도의 파일에 몇 가지 유용한 링크 저장은 매일 사용을위한 매우 반복 될 수 있습니다. 따라서 Jupyter Notebook과 같은 간단한 오픈 소스 도구를 사용하여이 프로세스를 자동화하여 Python 코드 및 Google 시트를 실행하려고 시도했으며 시각적으로 매력적인 방법으로 필요한 모든 데이터를 저장할 수 있습니다.
이 블로그 게시물의 내용
- 에 부품 한, 우리는 수동으로 열지 않고 Google 시트에 액세스하기 위해 Google API 자격 증명을 만드는 방법을 공유합니다.
- 에 부품 두, 우리는 Jupyter Notebook의 Python에서 웹 스크랩하는 방법을 논의 할 것입니다.
- 에 부품 3, 우리는 산출 자료 및 더 분석과 전시를 위한 자료를 저장하기 위하여 Google 장에 연결할 것입니다.
1부: Google API 자격 생성
- 구글 만들기 계정이 없는 경우.
- Google Developer Console을 엽니다.
- “Create Project” 버튼을 클릭하여 새로운 프로젝트 만들기,
- 프로젝트 이름과 ID를 입력하세요 (이 단계 이후에 변경할 수 없습니다)
- 프로젝트 열기 (refresh page if you do not see it) and click API -> 대시보드
- APIs Dashboard에서 필요한 API를 활성화하려면 "Enable APIs"를 클릭하십시오.
- 새로운 페이지가 오픈되어, “Google Drive API”와 “Google Sheets API”를 입력할 수 있습니다.
- API 모두 활성화.
- Google Drive API를 활성화한 후, “Credentials” 섹션으로 이동하고 “Create Credentials” -> “Service Account”.
Jupyter Notebook에서 Google 시트에 액세스하기 위해 이러한 자격 증명을 만들 필요가 있습니다.
- credentials 만들기 시작. 이름을 입력하고 (당신이 원하는 경우에) 선택 설정 건너뛰기. 역할의 경우 "Owner"를 선택하여 전체 액세스 (사용 전용)을 가질 수 있습니다.
- 자격 증명을 작성한 후, “서비스 계정” 섹션에서 볼 수 있습니다. 키에 액세스하려면 "Manage Keys" 섹션으로 이동하십시오.
- 이 서비스 계정의 키 만들기. 파일의 유형으로 "json"을 선택하십시오. 키를 만들 때 자동으로 키를 다운로드합니다.
자동 다운로드하지 않은 경우 KEYS 탭으로 이동하고 키를 수동으로 다운로드하십시오. 키는 기본적으로 서비스 계정의 모든 자격 정보가 있는 .json 형식 파일입니다. 키의 내용은 다음과 같습니다.
잘 했어! Google API 자격 증명을 준비하고 이제 코딩에있어!
Part Two: Python을 이용한 웹스크램핑
- 설치하기 Jupyter 노트북 Python을 실행합니다.
- 웹 페이지에서 정보를 얻으려면 웹 스크랩 라이브러리를 설치해야합니다. 아름다운Soup 그것의 쉬운 사용법 때문에.
cmd/terminal에서 다음 명령을 실행합니다.
pip install beautifulsoup4 |
- 연결하기 웹 페이지의 코드.
cmd/terminal에서 다음 명령을 실행합니다.
pip install requests |
- 이제 환경이 설치되면 공백 python 파일을 만듭니다.
- 모든 라이브러리를 가져옵니다. 데이터 조작에 numpy가 필요합니다.
import requestsfrom bs4 import BeautifulSoupimport numpy as np |
- 키워드를 배열로 정의, 예를 들어:
keywords = [“AI”, “neuralink”, “deep+learning”] |
- 원하는 웹 사이트로 이동하고 검색 바에서 "EXAMPLE"를 입력합니다. 여기에 필요한 모든 분류를 적용 할 수 있습니다, 예를 들어, "최신"또는 "Popular"등. 페이지 URL을 복사합니다. 예를 들어, URL을 다음과 같이 얻습니다. https://search.naver.com/...s&질내 사정&sm=tab_....
- URL에서 EXAMPLE 단어를 "query"와 동일하게 볼 수 있습니다. 이것은 다른 키워드를 넣을 수있는 장소이며 각 키워드의 URL을 저장합니다. 우리는 루프에 사용 하 고 URL 문자열을 concatenate
url_list = []for n in np.arange(0, len(keywords)):url_each = "https://m.search.naver.com/..query="+keywords[n]+"&..."url_list.append(url_each) |
- 이제 데이터를 얻기 위해 모든 URL이있을 때 다음 명령을 사용하여 페이지의 내용을 검색합니다.
r = requests.get(url_each)page = r.content |
- 콘텐츠에서 필요한 정보를 이해하기 위해 원하신 페이지로 이동하십시오 (결과 페이지) 오른쪽 클릭 "페이지 소스". 당신은 볼 것 페이지의 (이 콘텐츠는) 원하는 유형을 찾습니다 (· · 기타) 예를 들어, 뉴스 웹 사이트에서 각 뉴스에는 제목이 있습니다. 첨부된 링크 태그 (href 구성 요소) 태그). 이제 원하는 부분을 얻기 위해 코드의 다음 쉬운 라인을 사용합니다.
soup = BeautifulSoup(page, 'html5lib')news = soup.find_all('a', class_='news_title') |
이 매개 변수 (tag type, class name)은 웹 사이트에 따라 스크랩입니다.
- 원하는대로 데이터를 관리할 수 있지만, 우리의 경우, 우리는 각 키워드에 대한 데이터를 객체로 저장합니다. 그런 다음, 우리는 출력 데이터 프레임으로 사용될 큰 배열에서 결과로 모든 키워드에 대한 데이터를 결합했습니다.
- 다운로드 Pandas 데이터 프레임과 작업하는 라이브러리. 설치된 라이브러리를 사용하여 dataframe으로 resultant big array를 저장합니다.
import pandas as pdtable = pd.DataFrame(big_list) |
데이터 출력을 준비에 잘! 이제 Jupyter Notebook을 Google 시트에 연결하는 시간입니다.
부품 3 : Google 시트와 Jupyter 노트북 연결
- Jupyter Notebook을 사용하여 Google 시트로 로그인하려면 다음 라이브러리를 설치하십시오.
import gspreadfrom df2gspread import df2gspread as d2g |
- 내 계정 Google API 자격 및 Google 계정으로 승인.
from oauth2client.service_account import ServiceAccountCredentials scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'] credentials = ServiceAccountCredentials.from_json_keyfile_name('./YOUR CREDENTIALS FILE.json', scope) gc = gspread.authorize(credentials) |
중요 참고 : 모든 파이썬 파일은 credentials 키 파일 (.json)과 같은 폴더에 있어야합니다. 이 단계에서 오류가 발생하면 Google Developer Console으로 이동하여 Google Drive와 Google Sheets API 모두 프로젝트에서 활성화됩니다.
- Google 스프레드 시트 파일을 만들고 전에 생성 된 서비스 계정 이메일과 공유하십시오. 서비스 계정 이메일을 보시려면 credentials 키 .json 파일을 열고 "client_email"을 찾습니다.
- 이제 다음 명령을 사용하여 데이터 프레임 (큰 테이블)을 Google 시트에 업로드합니다.
d2g.upload(table, spreadsheet_key, s_name, credentials=credentials) |
각 변수에 대해 하나씩 가자.
table
=> Part 2의 단계 12에서 생성된 데이터 프레임.
spreadsheet_key
=> · Google 스프레드 시트를 열고 URL을 찾습니다.
spreadsheet_key는 기본적으로 아래의 URL의 강조된 부분입니다. https://docs.google.com/spreadsheets/d/1..longstringofletters.w의/ 편집..
그래서 "/d/"후와 "/edit.."부분의 문자와 숫자의 문자열입니다.
s_name
=> spreadsheet 이름, 당신은 어떤 문자열로 정의할 수 있습니다 (예를 들면, s_name = “TEST”)credentials
=> 당신의 Google API credentials, 부분 2 단계로 정의 된 3. 업로드 방법을 변경하려면 옵션 변수를 정의 할 수 있습니다. 더 으로· 오류가 없으면 Jupyter는 다음과 같은 메시지를 표시합니다.
<Worksheet ‘TEST’ id:123..example..123>
좋은 일!
이제 생성 된 스프레드 시트로 이동하고 "TEST" 스프레드 시트 및 데이터 프레임을 볼 수 있습니다.
핀토~
전체 코드를 참조하십시오. RSS 피드.