: 내 HTML 소스 코드에서내가 모든 <code><h2></code> 태그의 텍스트 (사용 XPath는) 얻기 위해 노력하고 있어요
<div id="static_id">
<div>...
<a ...>
<div>...
<h2>Text 1</h2>
<a ...>
<div>...
<div>...
<span>...
<h2>Text 2</h2>
<a ...>
<span>...
<h2>Text 3</h2>
<div id="static_id">
<div>...
<span>...
<h2>Text A</h2>
<a ...>
<div>...
<p>...
<div>...
<h2>Text B</h2>
<a ...>
<h2>Text C</h2>
[...]
는 ID static_id
와 <div>'s
있다 . 이 div 안에는 <h2>
태그 하나만 있습니다. 내용을 얻고 싶습니다.
lst = [["Text 1", "Text 2", "Text 3"], ["Text A", "Text B", "Text C"]]
이 목록의 목록 (예에서와 같이 별도의 목록에서 생을 마감해야 하나
<div id="static_id">
에서 모든 H2 텍스트가 있다고주의하십시오 : 결국, 나는 다음과 같다 목록을 가지고 싶습니다 .? 위의
는 생각이 달성 할 수있는 쉬운 방법
내가 모든 static_id
된 div를 계산하고이를 실현하려 모든 <h2>
태그를 반복 거기에 내 방법 :.
list_all = []
div_amount = len(tree.xpath('//div[@id="static_id"]')) # 2 elements in this case (works)
for d in range(1, div_amount+1) # 1,2
h2_count = len(tree.xpath('//div[@class="static_id"]['+str(d)+']//h2')) #count h2
lst = []
for i in range(1, h2_count+1) #1,2,3
h2_text = ''.join(tree.xpath('//div[@id="static_id"]['+str(d)+']//h2['+i+']/text()'))
lst.append(h2_text)
list_all.append(lst)
행 2 : 카운트 모든 ID = "static_id"
3 호선 : 루프 모든 ID = "static_id"이상
4 호선 : 모든 H2 카운트 (HTML 소스에서 불행하게도 모든 수소의하는 것은 계산됩니다)
5 호선 : 루프를 통해 모든 H2의
행 6 : h2'text 가져 오기를 다음 목록에 저장
사람이 제발 도와 줄래? 이 일이 더 쉬워 질 것 같지만 어떻게해야할지 모르겠다.
이list_all = [ static_id_div.xpath('.//h2/text()')
for static_id_div in tree.xpath('//div[@id="static_id"]') ]
여기서 중요한 차이는 내부 쿼리가 외부 쿼리에 의해 반환되는 요소에 대한 실행되고 있다는 점이다,보다는 루트에서 시작하여 작동하기 :
표본 데이터를 실제 표본 출력과 일치하는 유효한 XML로 만들어서 구문 분석하지 않은 의사 코드가 아닌 다른 사람이 답변을 확인하는 데 사용할 수 있도록하십시오. –