를 사용하여 div의에서 텍스트를 추출하는 방법 나는 그런 DIV를 containg HTML 페이지가 있습니다만 BeatifulSoup
<div class="item-content">
<p>Bla bla bla <em>Name</em> Ba bla bla.</p>
<p>Bla bla bla.</p>
<p> <a href="https://example.com/link.htm"><img src="/image.gif" height="620" width="620" /></a></p>
<p><style> p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px...} </style></p>
<p>Bla bla bla <em>Name</em> Ba bla bla.</p>
<p>Bla bla bla.</p>
</div>
내 목표는 "즐 즐 즐 이름과 문자열을 얻을 것입니다 즐 즐 즐 .. . 이름 bla bla " 스타일 없음. 나는 <a>
과 <style>
를 제외하는 관리이 사용
from bs4 import BeautifulSoup
f = open('ogn2.html', 'r')
html_doc = f.read()
f.close()
soup = BeautifulSoup(html_doc, 'html.parser')
a = soup.find(attrs={"class": "item-content"})
b = a.find_all("p")
text = ""
a = 0
for p in b:
a = a + 1
print(a, p.string)
if p.string and not p.style:
text = text + " " + p.string
print(text)
하지만 <p>
- 라인이 <em>
같은 태그가 포함 된 경우 불행하게도 BeautifulSoup로 텍스트를 반환하지 않습니다 수행하기위한
그래서 그 코드를 사용합니다.
내가 뭘 잘못 했니? 또는 어쩌면 어떻게 더 똑똑한 방법으로 그것을 달성 할 수 있습니까? (줄 단위로 읽지 않고 다시 연결하는 것)?
는 편집 : 내가 그리워 무엇
는 태그가 포함 된 paragrapghs 있습니다
<p>Bla bla bla <em>Name</em> Ba bla bla.</p>
그래서 내 원하는 결과 사이에 추가 태그없이 전체의 일반 텍스트이어야한다. 필터, 아래의 같은과에 대해
def filter_tags(element):
if element.parent.name in ['style']:
return False
return True
texts = filter(filter_tags, soup.find(attrs={'class': 'item-content'}).find_all(text=True)) # This will return list of texts
# You may apply join to concatenate.
" ".join(texts)
* "유감스럽게도 BeautifulSoup은 점"*이 (가) 있으면 텍스트를 반환하지 않습니다. 뭐야? –
HTML 태그는 [code formatting] (https://stackoverflow.com/editing-help#code)을 사용해야합니다. 또한 예상 출력과 실제 출력을 설명해 주시겠습니까 –
'p.string' 대신'p.getText()'를 사용해보십시오. –