용어 목록을 기반으로 트리에서 요소 제거

user2912466

웹 페이지 (스크립트를 실행할 때 URL이 전달됨)에서 일부 텍스트를 캡처하려고하지만 다른 속성이 할당되지 않은 단락 태그에 묻혀 있습니다. 모든 단락 태그의 내용을 수집 할 수 있지만 키워드 목록이 포함 된 모든 요소를 ​​트리에서 제거하고 싶습니다.

다음과 같은 오류가 발생합니다.

tree.remove (elem) TypeError : 인수 'element'에 잘못된 유형이 있습니다 (예상되는 lxml.etree._Element, _ElementStringResult를 얻음).

트리를 반복하려고 할 때 반환되는 것이 잘못된 유형이라는 것을 이해하지만 대신 요소를 어떻게 얻습니까?

샘플 코드 :

    #!/usr/bin/python

    from lxml import html
    from lxml import etree

    url = sys.argv[1]
    page = requests.get(url)
    tree = html.fromstring(page.content)

    terms = ['keyword1','keyword2','keyword3','keyword4','keyword5','keyword6','keyword7']
    paragraphs = tree.xpath('//p/text()')
    for elem in paragraphs:
        if any(term in elem for term in terms):
            tree.remove(elem) 
Jared Goguen

당신의 코드에서 elem입니다 _ElementStringResult인스턴스 방법이있는 getparent. 부모는 노드 Element중 하나의 개체입니다 <p>.

부모에는 remove트리에서 제거하는 데 사용할 수 있는 메서드가 있습니다.

element.getparent().remove(element)

나는 더 직접적인 방법이 있다고 믿지 않으며 왜 방법이 없는지에 대한 좋은 대답이 없습니다 removeself.

예제 html 사용 :

content = '''
<root>
    <p> nothing1 </p>
    <p> keyword1 </p>
    <p> nothing2 </p>
    <p> nothing3 </p>
    <p> keyword4 </p>
</root>
'''

다음을 사용하여 코드에서이를 확인할 수 있습니다.

from lxml import html
from lxml import etree

tree = html.fromstring(content)

terms = ['keyword1','keyword2','keyword3','keyword4','keyword5','keyword6','keyword7']
paragraphs = tree.xpath('//p/text()')
for elem in paragraphs:
    if any(term in elem for term in terms):
        actual_element = elem.getparent() 
        actual_element.getparent().remove(actual_element)

for child in tree.getchildren():
    print('<{tag}>{text}</{tag}>'.format(tag=child.tag, text=child.text))

# Output:
# <p> nothing1 </p>
# <p> nothing2 </p>
# <p> nothing3 </p>

의견을 보면이 코드가 작동하지 않는 것 같습니다. 그렇다면 html 구조에 대한 추가 정보를 제공해야 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록을 기반으로 2D Numpy 배열에서 요소 제거

분류에서Dev

다른 목록에있는 객체의 필드 값을 기반으로 목록에서 요소 제거-JAVA

분류에서Dev

파이썬은 다른 목록을 기반으로 목록에서 요소를 제거합니다.

분류에서Dev

조건 자 논리를 사용하여 목록의 개체가 C #의 다른 목록에 포함 된 요소를 기반으로 제네릭 목록에서 요소를 제거하려면 어떻게해야합니까?

분류에서Dev

파워 쿼리의 Power BI 매개 변수에서 쉼표로 구분 된 값 목록을 기반으로 행을 제거하려면 어떻게하나요?

분류에서Dev

일반 설정을 사용하여 목록 유형 리소스 레지스트리 레코드에서 요소를 제거하는 방법

분류에서Dev

일반 설정을 사용하여 목록 유형 리소스 레지스트리 레코드에서 요소를 제거하는 방법

분류에서Dev

다른 목록에서 주어진 색인을 기반으로 요소 교환

분류에서Dev

목록 이해력을 사용하여 목록에서 요소 제거-Python

분류에서Dev

Int (Haskell) 목록을 사용하여 목록에서 요소 제거

분류에서Dev

내부 텍스트를 기반으로 목록에서 요소를 제거하는 방법

분류에서Dev

요소 속성을 기반으로 목록에서 요소를 선택하는 Java 8 술어

분류에서Dev

다른 목록에있는 객체의 필드 값을 기반으로 목록에서 요소를 제거하는 방법

분류에서Dev

다른 목록을 기반으로 목록 열에서 목록 값 제거

분류에서Dev

목록을 사용하여 Java에서 중복 요소를 제거하는 간단한 프로그램

분류에서Dev

근접성을 기반으로 2D numpy 배열에서 요소 제거

분류에서Dev

Bash의 패턴을 기반으로 배열에서 요소 제거

분류에서Dev

다른 패턴을 기반으로 bash 배열에서 여러 요소 제거

분류에서Dev

자바를 사용하여 목록에서 다른 속성을 기준으로 중복 속성 요소를 제거 (8)

분류에서Dev

SQL 쿼리를 기반으로 배열에서 요소 제거

분류에서Dev

SQL 쿼리를 기반으로 배열에서 요소 제거

분류에서Dev

Haskell-목록 목록에서 요소 찾기 및 제거

분류에서Dev

목록에서 고유 한 요소를 제거하고 적절한 순서로 반복되는 요소로 목록을 인쇄하는 Python 스크립트

분류에서Dev

R에서 다른 목록을 기반으로 목록 목록을 어떻게 제한합니까?

분류에서Dev

"typeof"목록 열을 기반으로 R에서 행 제거

분류에서Dev

파이썬으로 목록에서 빈 요소 제거

분류에서Dev

목록에서 동적으로 요소 제거

분류에서Dev

다른 목록에서 다른 요소의 색인을 기반으로 목록에서 요소를 작성하려면 어떻게해야합니까?

분류에서Dev

원시 입력을 사용하여 Python에서 목록의 요소 제거

Related 관련 기사

  1. 1

    목록을 기반으로 2D Numpy 배열에서 요소 제거

  2. 2

    다른 목록에있는 객체의 필드 값을 기반으로 목록에서 요소 제거-JAVA

  3. 3

    파이썬은 다른 목록을 기반으로 목록에서 요소를 제거합니다.

  4. 4

    조건 자 논리를 사용하여 목록의 개체가 C #의 다른 목록에 포함 된 요소를 기반으로 제네릭 목록에서 요소를 제거하려면 어떻게해야합니까?

  5. 5

    파워 쿼리의 Power BI 매개 변수에서 쉼표로 구분 된 값 목록을 기반으로 행을 제거하려면 어떻게하나요?

  6. 6

    일반 설정을 사용하여 목록 유형 리소스 레지스트리 레코드에서 요소를 제거하는 방법

  7. 7

    일반 설정을 사용하여 목록 유형 리소스 레지스트리 레코드에서 요소를 제거하는 방법

  8. 8

    다른 목록에서 주어진 색인을 기반으로 요소 교환

  9. 9

    목록 이해력을 사용하여 목록에서 요소 제거-Python

  10. 10

    Int (Haskell) 목록을 사용하여 목록에서 요소 제거

  11. 11

    내부 텍스트를 기반으로 목록에서 요소를 제거하는 방법

  12. 12

    요소 속성을 기반으로 목록에서 요소를 선택하는 Java 8 술어

  13. 13

    다른 목록에있는 객체의 필드 값을 기반으로 목록에서 요소를 제거하는 방법

  14. 14

    다른 목록을 기반으로 목록 열에서 목록 값 제거

  15. 15

    목록을 사용하여 Java에서 중복 요소를 제거하는 간단한 프로그램

  16. 16

    근접성을 기반으로 2D numpy 배열에서 요소 제거

  17. 17

    Bash의 패턴을 기반으로 배열에서 요소 제거

  18. 18

    다른 패턴을 기반으로 bash 배열에서 여러 요소 제거

  19. 19

    자바를 사용하여 목록에서 다른 속성을 기준으로 중복 속성 요소를 제거 (8)

  20. 20

    SQL 쿼리를 기반으로 배열에서 요소 제거

  21. 21

    SQL 쿼리를 기반으로 배열에서 요소 제거

  22. 22

    Haskell-목록 목록에서 요소 찾기 및 제거

  23. 23

    목록에서 고유 한 요소를 제거하고 적절한 순서로 반복되는 요소로 목록을 인쇄하는 Python 스크립트

  24. 24

    R에서 다른 목록을 기반으로 목록 목록을 어떻게 제한합니까?

  25. 25

    "typeof"목록 열을 기반으로 R에서 행 제거

  26. 26

    파이썬으로 목록에서 빈 요소 제거

  27. 27

    목록에서 동적으로 요소 제거

  28. 28

    다른 목록에서 다른 요소의 색인을 기반으로 목록에서 요소를 작성하려면 어떻게해야합니까?

  29. 29

    원시 입력을 사용하여 Python에서 목록의 요소 제거

뜨겁다태그

보관