Python 파충류 분석 창고 의 xpath 분석 창고 상세 설명

21434 단어 파충류
xpath 분석 라 이브 러 리 상세 설명
간단히 설명 하 다
XPath 의 선택 기능 은 매우 강하 고 간단명료 한 경로 선택 표현 식 을 제공 합 니 다.XPath 는 정규 표현 식 에 비해 더욱 간결 하고 명료 하 며 웹 페이지 의 노드 에 있어 id, class 또는 다른 속성 을 정의 할 수 있 습 니 다.그리고 노드 간 에 차원 관계 가 있어 서 웹 페이지 에서 XPath 를 통 해 하나 이상 의 노드 를 찾 을 수 있 습 니 다.
규칙.
표현 식
묘사 하 다.
nodename
이 노드 의 모든 하위 노드 선택
/
현재 노드 에서 직접 하위 노드 를 선택 하 십시오.
//
현재 노드 에서 자손 결점 을 선택 하 다.
.
현재 노드 선택

현재 노드 의 부모 노드 선택
@
속성 선택
구체 적 인 코드 전시
텍스트 코드 분석
from lxml import etree
text = '''

'''
html = etree.HTML(text)
result = etree.tostring(html)
print(result.decode('utf-8'))

먼저 lxml 라 이브 러 리 의 etree 모듈 을 가 져 온 다음 HTML 텍스트 를 설명 하고 HTML 클래스 를 초기 화하 면 XPath 분석 대상 을 성공 적 으로 구성 할 수 있 습 니 다.여기 서 주의해 야 할 것 은 HTML 텍스트 의 마지막 li 노드 는 닫 히 지 않 았 지만 etree 모듈 은 HTML 텍스트 를 자동 으로 수정 할 수 있 습 니 다.
여기에서 우 리 는 tostring () 방법 을 호출 하면 수 정 된 HTML 코드 를 출력 할 수 있 지만 결 과 는 bytes 형식 입 니 다.decode () 방법 을 이용 하여 str 형식 으로 바 꾸 었 습 니 다. 결 과 는 다음 과 같 습 니 다.
<html><body><div>
    <ul>
         <li class="item-0"><a href="link1.html">first item</a></li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-inactive"><a href="link3.html">third item</a></li>
         <li class="item-1"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a>
     </li></ul>
 </div>
</body></html>

2. 텍스트 파일 분석
from  lxml import etree
html=etree.parse('***/test.html',etree.HTMLParser())
result=etree.tostring(html)
print(result.decode('utf-8'))

3. 모든 노드 가 져 오기
from  lxml import etree
text = '''

'''
html = etree.HTML(text)
result=html.xpath('//li')
print(result)
print(result[0])

4. 속성 일치
from  lxml import etree
html=etree.parse('***/test.html',etree.HTMLParser())
result=html.xpath('//li[@class="item-0"]')
print(result)

텍스트 가 져 오기
저 희 는 XPath 의 text () 방법 으로 노드 의 텍스트 를 가 져 옵 니 다.
from  lxml import etree
html=etree.parse('./test.html',etree.HTMLParser())
result=html.xpath('//li[@class="item-0"]/text()')
print(result)
#       :
# ['
']

저 희 는 텍스트 를 얻 지 못 했 습 니 다. 줄 바 꿈 문자 만 얻 었 습 니 다. 이 유 는 XPath 에서 text () 앞 에 / 가 있 기 때 문 입 니 다. 여기 서 / 의 의 미 는 직접 하위 노드 를 선택 하 는 것 입 니 다. li 의 직접 하위 노드 는 a 노드 이 고 텍스트 는 a 노드 내부 에 있 습 니 다. 여기 서 일치 하 는 결 과 는 바로 수 정 된 li 노드 내부 의 줄 바 꿈 문자 입 니 다.자동 으로 수 정 된 li 노드 의 꼬리 탭 이 줄 이 바 뀌 었 기 때문에 li 노드 내부 의 텍스트 를 가 져 오 려 면 두 가지 방식 이 있 습 니 다. 하 나 는 a 노드 를 선택 한 다음 에 텍스트 를 가 져 오 는 것 이 고 다른 하 나 는 / / 를 사용 하 는 것 입 니 다.다음은 두 사람의 차 이 를 살 펴 보 자.
from  lxml import etree
html=etree.parse('***/test.html',etree.HTMLParser())
result=html.xpath('//li[@class="item-0"]/a/text()')
print(result)
#       :
# ['first item', 'fifth item']
from  lxml import etree
html=etree.parse('***/test.html',etree.HTMLParser())
result=html.xpath('//li[@class="item-0"]//text()')
print(result)
#       :
# ['first item', 'fifth item', '
']

6. 속성 획득
from  lxml import etree
html=etree.parse('***/test.html',etree.HTMLParser())
result=html.xpath('//li/a/@href')
print(result)

여기 서 우 리 는 @ href 를 통 해 노드 의 href 속성 을 얻 을 수 있 습 니 다.이 곳 은 속성 과 일치 하 는 방법 이 다 릅 니 다. 속성 매 칭 은 중 괄호 에 속성 이름과 값 을 추가 하여 특정한 속성 을 제한 하 는 것 입 니 다. 예 를 들 어 [@ href = "link1. html"] 이 고 이곳 의 @ href 는 노드 의 특정한 속성 을 가 져 오 는 것 을 말 합 니 다. 양 자 는 구분 을 잘 해 야 합 니 다.
7. 속성 다수 치 일치
from lxml import etree
text = '''
  • first item
  • '''
    html = etree.HTML(text) result = html.xpath('//li[@class="li"]/a/text()') print(result) # HTML li class li li-first, , , : # []

    contains () 함수 가 필요 합 니 다.
    from lxml import etree
    text = '''
    
  • first item
  • '''
    html = etree.HTML(text) result = html.xpath('//li[contains(@class,"li")]/a/text()') print(result) # contains() , , , , 。 # : # ['first item']

    8. 다 속성 일치
    우 리 는 여러 개의 속성 을 만 나 하나의 노드 를 확정 할 수 있 습 니 다. 이 때 는 여러 개의 속성 을 동시에 일치 시 켜 야 합 니 다.이 때 연산 자 and 로 연결 할 수 있 습 니 다.
    
    from lxml import etree
    text = '''
    
  • first item
  • '''
    html = etree.HTML(text) result = html.xpath('//li[contains(@class, "li") and @name="item"]/a/text()') print(result) # : # ['first item']

    9. 순서대로 선택
    
    from lxml import etree
     
    text = '''
    
    '''
    html = etree.HTML(text)
    result = html.xpath('//li[1]/a/text()')
    print(result)
    result = html.xpath('//li[last()]/a/text()')
    print(result)
    result = html.xpath('//li[position()<3]/a/text()')
    print(result)
    result = html.xpath('//li[last()-2]/a/text()')
    print(result)
    #       ,        li  ,        1  。  ,        ,    1   ,   0  
    #       ,         li  ,     last()  ,        li  
    #       ,         3 li  ,        1 2   ,          li  。
    #       ,          li  ,     last()-2  。  last     ,  last()-2       。
    #       :
    # ['first item']
    # ['fifth item']
    # ['first item', 'second item']
    # ['third item']
    

    여기에 last (), position () 함 수 를 사 용 했 습 니 다. XPath 에는 유사 한 함수 가 많 습 니 다. 구체 적 으로 참고 할 수 있 습 니 다.http://www.w3school.com.cn/xpath/xpath_functions.asp

    좋은 웹페이지 즐겨찾기