주간책톡(부산 도서관) 크롤링 -2 XPath, CSS_SELECTOR

2023. 4. 24. 20:17프로젝트/주간책톡

<tr>
  <td>
    <font>value</font>
    <font>value2</font>
    <font>value3</font>
  </td>
</tr>

이런 형태의 웹이 있다고 하자. class 나, id 가 다 부모노드에 있어서 <font> 의 특정 값을 특정할수 class 나 id 로 특정 지을수 없을때. xpath 로 해결한다.

저자만 필요하다면?

 

단순 CSS_SELECTOR 로 class 가 없는 td 태그 내의 font 태그의 요소를 찾으면 저 조건을 만족하는 모든 값이 다 크롤링 된다.

 

author = driver.find_element(By.XPATH, '//tr/td/font[1]')

저자만 뽑히긴 했는데 사족이 달려있다. 원래 구조에서는 보지 못했던 것들.

 

[2]로 출판만 잘 나오는것을 확인.

-> //tr/td/font 로 시작하는 다른 형제노드가 있다고 판단.

책 소개 문구

확인하니 책 소개 문구인데. 리스트에 [저자,문구,저자2,문구2,...] 이런식이기에 써도 인덱싱해서 사용해도 된다고 판단.

하지만 공부하는 목적에서 이 부분을 제거하고 순수한 저자만 크롤링 하도록 연습.

 

개인적으로 실력이 미진해서 그런가 힘들었다.

 

하지만 저자,출판,출간,소개 문구 4개를 크롤링 하는것보다

저자만 크롤링 할수 있으면 컴퓨팅 리소스를 25%만 사용해도 되는 것이다.

 

td:not([class]) > font:not(:has(> img))

선택자로 img 태그를 가진 font 태그는 걸러 내었다.(소개 문구 font 태그에 img 태그를 자식으로 가짐)

 

결론

헛고생 한거 같은데 공부는 되었다!

728x90