문제

HTML 파일에서 일부 데이터를 제거하려고했습니다. 올바른 세포를 얻기 위해 논리가 코딩되어 있습니다. 이제 나는 '셀'의 실제 내용을 얻기 위해 고군분투하고 있습니다.

여기 내 HTM Snip이 있습니다

헤드 레 테로우 [0] [10

  [<font size="+0"><font face="serif" size="1"><b>Apples Produced</b><font size="3">       
  </font></font></font>]

이것은 Python []의 목록 항목입니다.

사과가 생산 된 가치가 필요하지만 얻을 수는 없습니다.

모든 제안은 감사 할 것입니다

이것이 나의 영원한 감사를 얻을 것이라고 설명하는 좋은 책에 대한 제안


그 대답에 감사드립니다. 그러나 더 일반적인 대답은 없습니다. 내 셀에 대담한 속성이 없다면 어떻게됩니까?

말하기 :

 [<font size="+0"><font face="serif" size="1"><I>Apples Produced</I><font size="3">       
  </font></font></font>]

사과가 생산되었습니다

문서를 읽거나 이해하는 법을 배우려고 노력하고 있으며 귀하의 응답이 도움이 될 것입니다.

이 도움에 정말 감사합니다. 이 답변의 가장 좋은 점은 그들로부터 일반화하기가 훨씬 쉽다는 것입니다. 그러면 BeautifulSoup 문서에서 그렇게 할 수 있다는 것입니다. 나는 Fortran 시대에 프로그래밍하는 법을 배웠고 나는 Python 학습을 즐기고있는 동안 Power-Beautifulsoup에서 Amzed가 그 예입니다. 문서 전체를 코 헤르넷에 만드는 것은 저에게 힘든 일입니다.

건배

도움이 되었습니까?

해결책

headerRows[0][10].contents[0].find('b').string

다른 팁

그만큼 BeautifulSoup 문서 필요한 모든 것을 다루어야합니다.이 경우 사용하고 싶은 것처럼 보입니다. findNext:

headerRows[0][10].findNext('b').string

더 일반적인 솔루션에 의존하지 않는 더 일반적인 솔루션 <b> 태그는 텍스트 논쟁 findAll,이를 통해서만 검색 할 수 있습니다 NavigableString 사물:

>>> s = BeautifulSoup(u'<p>Test 1 <span>More</span> Test 2</p>')
>>> u''.join([s.string for s in s.findAll(text=True)])
u'Test 1 More Test 2'

나는 모든 아름다운 수프 클래스를 모든 방법으로 확장하는 기본 수업이 있습니다. 이러한 방법 중 하나는 다음과 같습니다.

  def clean(self, val):
    if type(val) is not StringType: val = str(val)
    val = re.sub(r'<.*?>', '', s) #remove tags
    val = re.sub("\s+" , " ", val) #collapse internal whitespace
    return val.strip() #remove leading & trailing whitespace
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top