본문 바로가기

Data science/크롤링

lxml

import lxml.html

# parse() 함수로 파일 경로를 지정할 수 있다.
tree = lxml.html.parse('dp.html')

# parse() 함수로 URL을 지정할수도 있지만 추출할 떄 미세한 설정을 할 수 없으므로 추천하지 않는다.
# tree = lxml.html.parse('https://gokimkq123.github.io/CV.github.io/')

# 파일 객체를 지정해서 파싱할 수도 있다.
from urllib.request import urlopen
tree = lxml.html.parse(urlopen('https://gokimkq123.github.io/CV.github.io/'))
print(type(tree))

html = tree.getroot() # getroot() 메서드로 html 루트 요소의 HtmlElemnet 객체를 추출할 수 있다.
print(type(html))


# fromstring() 함수로 문자열을 파싱할 수 있다.
html = lxml.html.fromstring('''
<html lang="en"><head>
    <meta charset="UTF-8">
    <title>CV</title>
</head>
<body>
    <nav class="nav">
        <a href="#" class="menu_nav">home</a>
        <a href="#CV" class="menu_nav">CV</a>
        <a href="#" class="menu_nav">Activity</a>
        <a href="#" class="menu_nav">Project</a>
    </nav>
</body></html>''')
print(type(html))
print(html.xpath('//a'))    # xpath() 메서드로 XPath와 일치하는 요소 목록을 추출할 수 있다.
print(html.cssselect('a'))  # cssselect() 메서드로 선택자와 일치하는 요소 목록을 추출할 수 있다.


# HTML 파일 일고ㅡ getroot() 메서드로 HtmlElement 객체 생성
tree = lxml.html.parse('dp.html')
html = tree.getroot()

# cssselect() 메서드로, a요소를 출력한다

for a in html.cssselect('a'):
    print(a.get('href'), a.text)

'Data science > 크롤링' 카테고리의 다른 글

RSS  (0) 2024.09.21
BeautifulSoup  (0) 2024.09.21
Python 크롤링  (0) 2024.08.30
Python 정규 표현식 정리  (0) 2024.08.28
re 모듈로 스크레이핑 실습  (0) 2022.05.18