웹사이트를 크롤링 할 때 가장 난감한 상황은 웹 크롤러가 차단되는 것입니다. 웹 크롤러가 계속 작동이 되도록 디자인하는 것이 중요합니다. 크롤러를 개발하면서 웹사이트의 데이터를 수집하는데 보다 중점을 두어야 합니다. 그러나 한해 한해 웹 크롤러를 개발하면서 다음의 4가지 사항의 중요성을 깨닫게 되었습니다. 고성능의 웹 크롤러를 결정하는 요인에는 무엇이 있을까요? 다음의 사항을 고려해 보아야겠습니다. 크롤러의 속도 시간 안에 웹 데이터를 수집할 수 있는가? 수집한 데이터의 완전성 수집하고자 하는 데이터를 다 수집 완료했는가? 수집한 데이터의 정확성 수집한 데이터의 정확성을 확인할 수 있는가? 웹 크롤러의 확장성 수집할 웹사이트가 추가될 때 웹 크롤러가 확장 가능한가?
위의 모든 질문을 충족시킬 수 있는 웹 크롤러를 개발하기 위한 몇 가지 팁을 알려드리겠습니다. ● 팁 1: 웹사이트에 요청하는 횟수를 줄이십시오. 옐로 페이지에서 회사의 주소와 상세 정보 데이터를 가져오고 싶다면, Selenium의 driver.find Element를 두 번 이용하여 주소와 상세정보를 각각 검색하여 데이터를 수집하는 방법보다, 페이지 소스를 한 번에 다운로드하고 BeautifulSoup으로 수집하고자 하는 데이터를 추출하는 방법이 더 좋은 방법입니다. ● 팁 2: 하나의 레코드의 데이터를 수집하면 CSV에 기록하십시오. 과거에는 웹 크롤러를 데이터 수집이 끝나면 데이터를 기록하도록 개발하였습니다. 그러나 이 방법은 현명한 방법은 아닙니다. 만약 모든 데이터를 수집한 후 기록하는 경우, 데이터 수집을 하면서 오류가 발생할 때 데이터 수집을 처음부터 다시 해야 하는 경우가 발생합니다. 그러나 python writerow 함수를 사용하여 레코드를 기록하면, 웹 크롤러에서 오류가 발생할 경우에도 처음부터 다시 웹 데이터를 수집하지 않아도 됩니다.
● 팁 3: 웹사이트의 차단 시간을 단축시키십시오. 크롤러가 웹사이트에서 차단되지 않기 위한 여러 가지 방법이 있지만, 크롤링 프레임워크가 우수하면 이를 구현하는 노력이 줄어들 수 있습니다. 웹 크롤러를 개발하기 위해 주로 사용하는 라이브러리는 Request, ScrapeScrapy, Selenium입니다. 웹사이트로부터 차단이 덜 되는 ScrapeScrapy를 더 사용하며 웹사이트의 robots.txt를 항상 확인합니다. ScrapeScrapy 프레임워크에 있는 기능을 사용하여 웹 크롤러 엔진이 랜덤으로 느리게 작동되도록 구현합니다. 이보다 좋은 방법은 IP와 사용자 에이전트를 교체하여 사용하는 것입니다. scrapy-splash나 selenium을 사용하는 경우 랜덤 클릭과 스크롤을 사용하면 사람이 브라우저를 사용하는 것 같은 효과를 낼 수 있습니다. ● 팁 4: API를 통해 데이터를 수집하십시오. 트위터는 API를 사용하여 웹 데이터 수집을 할 수 있습니다. API를 사용하면 쉽고 안정적으로 데이터 수집이 가능합니다. ● 팁 5: 원래 웹사이트 대신 구글 캐시 웹사이트의 데이터를 수집하십시오. 원래의 웹사이트 대신 캐시 웹사이트를 스크랩하면 최신 데이터를 수집할 수 없습니다. 그러나 원래 웹사이트의 업데이트 주기가 길다면 현명한 방법이 될 수 있습니다.
Comments