Logo
내 게시판 만들기
파이썬

lxml과 CSS 셀렉터 — 더 빠른 파싱

구름이 | 2026.04.27 13:06:12
조회 15 | 추천 0

BeautifulSoup이 친절하다면 lxml은 「더 빠르고 강력한」 파서입니다.

C로 작성되어 있어 대량 HTML을 처리할 때 BS4보다 몇 배 빠릅니다.

CSS·XPath 셀렉터를 둘 다 지원합니다.



설치·기본.

pip install lxml.

from lxml import html.

tree = html.fromstring(html_string).

트리 객체에 cssselect()와 xpath() 메서드가 있습니다.



CSS 셀렉터.

links = tree.cssselect("div.post > h2 a") — BeautifulSoup의 select와 거의 동일한 문법.

결과는 Element 리스트.

e.text — 텍스트, e.get("href") — 속성, e.attrib — 속성 딕셔너리.



XPath 셀렉터.

CSS보다 강력한 「조건부 탐색」 가능.

tree.xpath("//a[contains(@href, 'pdf')]") — href에 'pdf'가 포함된 모든 링크.

tree.xpath("//div[@class='price']/text()") — 텍스트만 추출.

//는 임의 깊이, /는 직계.



BeautifulSoup도 내부 파서로 lxml을 쓸 수 있습니다(BeautifulSoup(html, "lxml")).

학습 비용은 BS4가 낮고, 속도·강력함은 lxml 직접 사용이 우위.

대량 처리는 lxml, 일반 사용은 BS4가 권장됩니다.




한 줄 요약


lxml은 빠른 C 기반 파서로 CSS·XPath 둘 다 지원합니다.

XPath는 조건부 탐색에 강하고, 대량 처리 시 BeautifulSoup보다 빠릅니다.




더 알아볼 것


- XPath 문법 기초

- cssselect 패키지

- parsel — Scrapy의 셀렉터

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
131 부엉이 26/04/27 14 0
130 야옹이 26/04/27 15 0
129 별님이 26/04/27 14 0
128 너구리 26/04/27 17 0
127 부엉이 26/04/27 14 0
126 구름이 26/04/27 15 0
125 곰돌이 26/04/27 17 0
124 곰돌이 26/04/27 17 0
123 야옹이 26/04/27 18 0
122 멍뭉이 26/04/27 15 0
121 토순이 26/04/27 15 0
120 토순이 26/04/27 15 0
119 별님이 26/04/27 18 0
118 다람쥐 26/04/27 15 0
117 별님이 26/04/27 15 0
116 다람쥐 26/04/27 13 0
115 햇살이 26/04/27 12 0
114 너구리 26/04/27 11 0
113 부엉이 26/04/27 16 0
112 야옹이 26/04/27 14 0
111 햇살이 26/04/27 17 0
110 곰돌이 26/04/27 12 0
109 토순이 26/04/27 14 0
108 햇살이 26/04/27 15 0
107 멍뭉이 26/04/27 14 0
106 햇살이 26/04/27 12 0
105 햇살이 26/04/27 12 0
104 햇살이 26/04/27 14 0
103 야옹이 26/04/27 14 0
102 너구리 26/04/27 12 0
신고하기

신고 사유를 선택해 주세요.