2009-09-29 4 views
0

BeautifulSoup를 사용한 후 lxml을 배우려고합니다. 그러나 나는 일반적으로 강력한 프로그래머가 아니다. 텍스트가 굵게lxml의 속성과 스타일 태그의 차이

<p style="font-family:times;text-align:justify"><font size="2"><b><i> The reasons to eat pickles include: </i></b></font></p> 

때문에, 나는 그 텍스트를 끌어 원하는 :

나는 약간의 HTML 소스에 다음과 같은 코드가 있습니다. 나는 그 특정한 선이 굵게 표시된다는 것을 구별 할 수없는 것처럼 보입니다.

내가 좋아하는 스타일의 ATTRIB에 굵은 단어를 가진 문서로 일하고 저녁이 일을 시작한 다음

<p style="font-style:italic;font-weight:bold;margin:0pt 0pt 6.0pt;text-indent:0pt;"><b><i><font size="2" face="Times New Roman" style="font-size:10.0pt;">The reason I like tomatoes include:</font></i></b></p> 

내가에서 일하고 문서 조각이라고 말해야한다 I는 라인 읽어 함께 라인을 접합하고 html.fromstring 함수를 사용

txtFile=open(r'c:\myfile.htm','r').readlines() 
strHTM=''.join(txtFile) 
newHTM=html.fromstring(strHTM) 

등 I 위가 HTM 코드의 첫 번째 라인은 [19]

newHTM은

HUMM이 나에게 가까이

newHTM.cssselect('b') 

나는 아직 완전히 이해하지 못하는 받고있는 것으로 보이지만 여기에 솔루션입니다 :

for each in newHTM: 
    if each.cssselect('b') 
     each.text_content() 

답변

0

올바른 접근 방식되지 않습니다 정말 CSS API를 사용. b 요소를 모두 찾으려면 다음을 수행하십시오.

strHTM=open(r'c:\myfile.htm','r').read() # no need to split it into lines first 
newHTM=html.fromString(strHTM) 
bELements = newHTM.findall('b') 
for b in bElements: 
    print b.text_content() 
+0

이것은 내가 시작한 곳이며 작동하지 않습니다. newHTM이 클래스이기 때문에 그것이 내가 알아낼 수있는만큼 가까이에 있지만 지금은 길을 잃어 버렸습니다. 나는 왜 내가 newHTM에서 각각을 운영하기로 결정했는지 확신 할 수는 없지만 그 것이 핵심이었다. –

+0

"작동하지 않는다"는 것은 무엇을 의미합니까? 그것은 나를 위해 잘 작동합니다. –

+0

글쎄 newHTM과 newHTM의 각각이 같은 타입의 객체이기 때문에 나는 틀렸다. – PyNEwbie