XPATH에 대한 이해를 높이려고합니다. 나는 많은 요소를 가진 문서를 가지고있다. 굵게 표시된 특정 텍스트가있는 문서 내의 글꼴 요소를 찾고 있습니다.LXML의 XPATH를 사용하여 특성을 기반으로 특정 요소를 지정하는 방법
다음은 div 요소 내부의 글꼴 요소의 예입니다. 글꼴 요소에 굵게 표시하려는 텍스트가 있습니다.
<div style="line-height:120%;padding-bottom:10px;padding-top:10px;font-size:10pt;"><font style="font-family:inherit;font-size:10pt;font-weight:bold;">SECTION 1. Executive Summary</font></div>
훨씬 더 큰 문서의 일부입니다. 내가 XPATH 튜토리얼을 발견하고 그냥 확실히 내가 가진 문제로 실행하고 있지 않다하기 위해 특정 요소
을 선택하는 방법을 설명 나는이 x는 3023 개 요소가로 일tree=html.fromstring(open('c:\\mytest.htm')
x=tree.xpath('//font')
파일을 읽고있다 어떻게 내가 그 (것)들을 조사 할 때 나는 그들이 글꼴 성분 전부다는 것을 것을을 발견했다. 일부는 내가 원하는 요소였습니다.
나는 다음 my_elements가 비어대로 작동하지 않았다my_elements = tree.xpath('//font[@font-weight='bold']')
를 사용하여 관련 요소를 분리하기 위해 노력했다. 이 질문을 쓰는 동안 나는 html의 싹둑을 더 가까이에서 보았고 유휴 상태에서 놀았습니다. 문제는 글꼴 태그 font-weight의 속성이 없다는 것입니다. 폰트 가중치는 스타일 속성과 관련이 있습니다.이 예에서 글꼴 태그의 유일한 속성은 스타일입니다. 나는 더 많이 말하고 싶지만 물을 너무 많이 진흙에 묻히게 될까 봐 두렵다.
결론 나는 xpath를 사용하여 굵은 글꼴 요소를 찾고 텍스트에서 단어 섹션을 찾을 수 있기를 원한다. 엘리먼트를 반복하고 정말로 clunky 한 방식으로 테스트한다.
my_elements = [e for e in tree.iter() if e.tag == 'font' if 'bold' in e.values()[0] ]
my_elements = e for e in my_elements if 'section' in e.text_content().lower()
XPATH는 이해할 만하다.
설명해 주셔서 감사합니다.
HUMM 나는 마침내 이제 궤도에
testelem=tree.xpath('//font[contains(@style,"font-weight:bold")]')
괜찮 오전 우리는
이제testelem=tree.xpath('//font[contains(@style,"font-weight:bold") and contains(text(),"SECTION")]')
는 대소 문자를 구분하지
내가 이해에 가까운 얻고 그것을 만들기 위해 및 연산자를 사용 어떻게 작동합니까?하지만 해결책을 제시하는 사람에게는 행복합니다.
testelem=tree.xpath('//font[contains(@style,"font-weight:bold") and starts-with(translate(text(),"SECTION","section"),"section")]')
당신이 * 굵게 * 주위에 당신의 따옴표를 이스케이프 안 : 기본적으로 XPath는이 EXSLT 네임 스페이스에서 정규 표현식을 지원? 'my_elements = tree.xpath ('font = @ font-weight ='bold ']')', – toniedzwiedz
다른 곳에서 본 인터프리터와 예제에서 볼 수있는 것이 아닙니다. – PyNEwbie
답변을 얻은 것 같습니다. 우리가 그것을 upvote 수 있도록 아래에 게시하는 방법에 대해? – unutbu