Web-scraping with Chrome extension

Share
Web-scraping with Chrome extension

Crawling, Scraping 비슷한 뜻이며 내가 원하는 데이터를 웹에서 수집함을 의미한다.

Design Seeds 라는 웹사이트를 연구의 목적으로 크롤링을 했다.

이 웹사이트는 색감에서 영감을 받아, 아름다운 이미지에서 주요 색상을 color palette로 나타내준다.

실제 해결한 방법은 해결 이란 아래 헤더를 참고

이 웹사이트를 크롤링하기 위해 가장 먼저 생각한 방법은 이 웹사이트의 Instagram 계정 크롤링이다.

허나 이 방법은 Instagram API를 사용하여야했다. 그래서 Instagram Developer에 앱을 등록하고 client-id, client-secret 등을 통해서 access-token 까지 얻었지만, 방법이 복잡하고 사용했던 python code가 유지보수가 안되어있다. 이 blog post를 통해서 access-token을 얻었다.
무엇보다도 내가 직접 웹사이트를 크롤링하는 것이 아니어서 포기했다.

그 다음은 웹사이트의 pinterest를 크롤링하는 것인데, 이 방법은 Chrome의 Extention에서 PinDown이라는 앱을 사용했다. 그리고 design seeds, palette 검색의로 나오는 핀들을 다운받아봤는데 속도도 빠르고 좋은데 무료버전은 갯수 제한이 있다. 유료 버전 결제를 하려했는데 리뷰를 보니 버그가 있는 것 같아서 접었다.

해결

다음으로는 크롬 extention에서 Web scraper를 사용해서 웹사이트를 직접 크롤링해 보았다. 생각보다 사용법을 자세히 설명해놓았고 이해가 쉽다. Youtube : Web Scraper Intro. pagination 두개만 참고해서 웹사이트 크롤링에 성공하였다.[1]
생각보다 웹사이트 크롤링이 매우 쉬워서 놀랐다. 나는 Python script로 일일이 요소검사해서 crawling해야 할줄 알았는데 편리한 chrome extention으로 수고를 아주 쉽게 덜었다.

또한 Chrome을 사용하므로 어떤 OS를 사용하던 상관없다.

{"startUrl":"https://www.design-seeds.com/blog/","selectors":[{"parentSelectors":["_root","nextpage"],"type":"SelectorLink","multiple":true,"id":"nextpage","selector":"div.nav-previous a","delay":""},{"parentSelectors":["_root","nextpage"],"type":"SelectorElement","multiple":true,"id":"element","selector":"article.parker-posts","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"collection_name","selector":"h4.entry-meta a","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorImage","multiple":false,"id":"img_url","selector":"img.attachment-full","downloadImage":false,"delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"title","selector":"h1.entry-title a","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"date","selector":"time.entry-date","regex":"","delay":""},{"parentSelectors":["element"],"type":"SelectorText","multiple":false,"id":"owner","selector":"p a","regex":"","delay":""}],"_id":"designseeds"}

위 스크립트를 직접 코딩하는 방식이 아니고 graph를 만들어서 필요한 요소를 클릭하고 node끼리 연결만 해주면 되니까 매우 쉽다. 생각보다 크롤링이 쉬워지면서 연구에 필요한 user data를 쉽게 취득할 방법을 알아내서 계속 도움이 많이 될 것 같다.

결과를 csv로 다운링크를 걸어주므로 다운받으면 끝.
그리고 간단한 python, shell script로 image들을 다 받을 수 있었다.



  1. (영상 설명도 쉽게 잘해서 난 좋았는데 음향이 작고 뭔소린지 모르겠다는 유투브 댓글이 많았다. 이정도면 감사히 받아먹어야지.) ↩︎

Read more

허깅페이스 르로봇 해커톤 후기

허깅페이스 르로봇 해커톤 후기

본 블로그의 주인장들은 이번 허깅페이스의 르로봇 월드와이드 해커톤의 서울 호스트를 맡았습니다. 너무 재밌었고, 그 과정들과 후기를 남깁니다. 현장은 다큐 형식의 작은 영상을 만들었으니 한번 봐주세요. 계기 저는 LLM 만 하고 있었고, Action 모델은 사실 관심이 없었습니다, 준호는 1년 정도 로봇에 AI 를 넣는 일을 하고 있었죠. 허깅페이스에서 르로봇 플랫폼을 만들고

By park jong hyun
DeepDive LLM 3편 - Reinforcement Learning

DeepDive LLM 3편 - Reinforcement Learning

* 1편 - 사전 학습 (Pre Training) * 2편 - Supervised Fine Tuning * 3편 - Reinforcement Learning Reinforcement Learning Pretrain, SFT 에 이어서 세번째 단계는 Reinforcement Learning (RL, 강화학습) 입니다. 비유를 해보자면, pretrain은 그냥 책을 읽는 것이고요, SFT는 예제 문제와 이미 작성된 해설을 보는 것입니다. RL 은 해설이 없는 문제를 직접 풀어보는 것입니다. 어떻게 풀든

By park jong hyun
DeepDive LLM 2편 - Supervised Fine Tuning

DeepDive LLM 2편 - Supervised Fine Tuning

* 1편 - 사전 학습 (Pre Training) * 2편 - Supervised Fine Tuning * 3편 - 강화 학습 (Reinforcement Learning) Supervised Fine Tuning Post Training 의 첫번째 단계 SFT 입니다. Pre Training 에 비하면 아주 작은 양의 데이터만 필요하지만, 실제로 성능을 이끌어 내는데에는 중요한 단계입니다. 멀티턴 대화 (Multi Turn Conversation) ChatGPT 를 포함해서 대부분의 AI 서비스들은

By park jong hyun
DeepDive LLM 1편 - 사전 학습 (Pre-Training)

DeepDive LLM 1편 - 사전 학습 (Pre-Training)

본 포스트 시리즈는 카파시 선생님의 영상 을 기반으로 정리한 내용입니다. 직접 유투브에서 다루기도 했으니 영상으로 보셔도 됩니다. * 1편 - 사전 학습 (Pre-Training) * 2편 - Supervised Fine Tuning * 3편 - 강화 학습 (Reinforcement Learning) LLM 의 Training LLM을 만들 때는 크게 세 가지 주요 단계가 있습니다. 1. 사전 학습(Pre-Training) * 인터넷 텍스트(

By park jong hyun