day11(5/2) TIL
day11 느낀점
재미있고 유용한 api들은 참 많은 것 같다. 나도 적절한 곳에서 다양한 api를 사용해서 구현을 해보고싶은 욕심이 생긴다.
웹 페이지에서 우리가 원하는 부분의 데이터를 수집해 오는 것을 뜻한다.
cf. 웹 크롤링은 자동화해 주기적으로 웹 상에서 페이지를 돌아다니면서 분류/색인하고 업데이트된 부분을 찾는 등의 일을 하는 것을 말한다.
웹 스크래핑과 웹 크롤링의 차이는 다음 링크를 통해 더 자세히 알 수 있다.
https://dzone.com/articles/web-scraping-vs-web-crawling-whats-the-difference
동적인 웹페이지를 스크래핑할 때는 셀레니움을 사용하여 웹페이지를 브라우저에 띄운 후 소스코드를 가져오는 방법을 써야한다.
셀레니움을 사용하기위해 크롬브라우저 버전과 일치하는 크롬드라이브를 다운 받아 프로젝트에 넣어주어여한다.
driver = webdriver.Chrome('./chromedriver') # 드라이버를 실행
url = "https://www.~~~"
driver.get(url) # 드라이버에 해당 url의 웹페이지를 띄움
sleep(5) # 페이지가 로딩되는 동안 5초 간 기다림
req = driver.page_source # html 정보를 가져옴
sleep(10)
driver.quit() # 정보를 가져왔으므로 드라이버는 꺼줌.
soup = BeautifulSoup(req, 'html.parser') # 가져온 정보를 beautifulsoup으로 파싱
https://navermaps.github.io/maps.js.ncp/docs/tutorial-2-Getting-Started.html
사실 네이버 지도 api같은 경우는 공식 문서 보기가 정말 좋다.
아마 나중에 필요하다면 공식문서를 꼼꼼히 보고 더 잘 활용하자.
특정 포트 PID 알아내기
sudo lsof -i :5000
특정포트 닫기
sudo kill -9 PID
맥북을 사용할때 5000포트를 이미 사용중이라는 오류가 나온다.
이때는 위의 명령어를 사용해서 포트를 죽여도 다시 살아난다.
그때는 AirPlay 수신 모드를 꺼주면 된다.
이미 존재하는 Key를 없애고 싶을 때 => $unset
{
"id" : 0,
"name" : "hongseo",
"description" : "jjang"
}
{
"id" : 0,
"name" : "hongseo"
}
db.collection_name.update({ "id": 0 }, { $unset : { "description" : False } })