Python 파충류 분석 창고 의 xpath 분석 창고 상세 설명
21434 단어 파충류
간단히 설명 하 다
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python은 어떻게 파충류의 효율을 향상시킬 것인가단일 스레드 + 멀티태스킹 비동기 협동 협정 함수(특수 함수)를 정의할 때 async 수식을 사용합니다. 함수 호출 후 내부 문장은 즉시 실행되지 않고 협동 대상으로 되돌아옵니다. 퀘스트 대상 작업 대상 = 고급 협...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.