>백엔드 개발 >파이썬 튜토리얼 >BeautifulSoup의 `findAll()` 또는 `find_all()`에서 반환된 목록에서 속성 값에 올바르게 액세스하는 방법은 무엇입니까?

BeautifulSoup의 `findAll()` 또는 `find_all()`에서 반환된 목록에서 속성 값에 올바르게 액세스하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-08 02:40:12386검색

How to Correctly Access Attribute Values from a List Returned by BeautifulSoup's `findAll()` or `find_all()`?

BeautifulSoup을 사용하여 속성 값에 액세스

BeautifulSoup 및 다음 코드를 사용하여 특정 입력 태그에서 값 속성을 추출하려고 할 때:

import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)

inputTag = soup.findAll(attrs={"name": "stainfo"})

output = inputTag['value']

print str(output)

오류 발생: TypeError: 목록 인덱스는 정수여야 합니다. str.

BeautifulSoup의 문서에서는 이러한 시나리오에서 문자열이 문제를 일으키지 않아야 한다고 제안합니다. 그러나 오류는 그렇지 않다는 것을 나타내는 것 같습니다.

해결 방법

문제는 발견된 모든 요소의 목록을 반환하는 .findAll()의 사용에 있습니다. 특정 태그의 값 속성에 액세스하려면 다음 접근 방식을 사용해야 합니다.

  1. .findAll() 대신 .find_all()을 사용하세요.

    .find_all()은 발견된 모든 요소의 목록을 반환하는 반면, .find_all()은 발견된 요소 중 하나만 반환합니다. 요소.

  2. 목록에 있는 첫 번째 요소의 값 속성에 액세스합니다.

    BeautifulSoup은 발견된 요소 목록을 반환하므로 다음이 필요합니다. 액세스하려는 요소의 인덱스를 지정합니다. 이 경우 목록에 있는 첫 번째 요소의 값 속성은 다음을 통해 액세스할 수 있습니다.

    output = inputTag[0]['value']
  3. 또는 .find()를 사용하여 첫 번째 요소를 가져옵니다.

    .find_all() 대신 .find()를 사용하여 직접 가져올 수 있습니다. 처음 발견된 요소:

    inputTag = soup.find(attrs={"name": "stainfo"})
    output = inputTag['value']

위 내용은 BeautifulSoup의 `findAll()` 또는 `find_all()`에서 반환된 목록에서 속성 값에 올바르게 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.