urllib 에서 parse 도 불러오겠습니다. ▼
링크를 찾는 클래스를 정의해 주도록 하겠습니다. ▼
초기화를 아래와 같이 하고 HTMLParser를 종속하게 하였습니다. ▼
웹페이지에서 tag 를 다루는 함수를 정의하고 찾게 될 tag를 확인할 용도로 print() 하도록 하였습니다. ▼
에러는 아래와 같이 우선 정의해 주었습니다.▼
클래스 기초 정의는 끝났습니다. 그럼 이게 어떤 의미인지 알아보도록 하겠습니다.
아래 코드를 보시면 finder 는 LinkFinder() 로부터 생성하였습니다.
그리고 웹페이지에서 찾을 태그가 feed() 안에 들어가게 되는데, 여기서는 기본적으로 이러한 태그값을 임의로 넣어주었습니다. 결과를 보시면 이해가 금방 갈 것입니다. ▼
상기 코드를 실행해 주면, 아래와 같이 태그 값들만 쭈~욱 프린트가 되어 나옵니다.▼
이제 이렇게 나오는 태그값을 어떻게 활용할지를 고민해야 합니다.
상기 코드를 아래와 같이 수정하겠습니다. 만약에 웹페이지에서 a 태그가 있으면 tag == a 라는 부분과 맞닥드리게 됩니다. 이는 a (링크) 태그입니다. HTML 에서 어떤 값들에 링크를 걸 때는 <a href= " URL "> 사용자에게 보여지는 부분 </a> , 이렇게 구성되어 있습니다.
즉, 여기서 a 는 태그명, href 는 attribute(우리말로는 속성(?)쯤 될겁니다.)이라고 합니다. 그리고 " URL " 값이 value 에 해당합니다.▼
여기서 attribute 가 href 속성과 일치한다면, ▼
그리고 클래스의 초기화 부분에서 아래와 같이 수정을 하였습니다. base_url, page_url, 그리고 links 를 아래와 같이 넣어주었습니다.▼
이제 기본 URL 인 self.base_url 과 value 를 하나로 합치게 합니다. 만약 절대경로라면 같은 값이여서 괜찮고, 상대경로라면 두 값을 합쳐주어 절대 경로값을 url 에 넣어주게 됩니다. 이렇게 찾은 url 이 크롤링 할 link 값이 되는 것입니다.▼
이제 이렇게 찾은 url 값을 크롤링 할 links 에 넣어주게 하였습니다.▼
그리고 page_links 값을 반환하는 함수를 정의하였습니다. ▼
이제 기본적인 크롤링 부분은 마무리가 되어 갑니다. 수고하셨습니다.
'Programming > Python Web Crawler for intermediate learners' 카테고리의 다른 글
Web Crawler 007 - Initialize the Spider information - 스파이더 초기화. (0) | 2016.03.25 |
---|---|
Web Crawler 006 - Creating the spider - 스파이더 만들기. (4) | 2016.03.25 |
Web Crawler 004 - Accelerate Crawling by avoiding repetition - 중복을 회피하여 크롤링 속도 개선하기. (0) | 2016.03.21 |
Web Crawler 003 - 링크 찾기 및 삭제하기 (Adding and deleting links) (5) | 2016.03.18 |
Web Crawler 002 - Creating Crawled files and Queue (1) | 2016.03.15 |