[PYTHON] 아름다운 수프에 중첩 된 요소를 얻는 방법
PYTHON아름다운 수프에 중첩 된 요소를 얻는 방법
나는 td에서 몇몇 HREF를 얻기 위해 필요한 문법으로 고심하고있다. 테이블, tr 및 td 요소에는 클래스 나 ID가 없습니다.
이 예제에서 앵커를 잡고 싶다면 무엇이 필요합니까?
감사
해결법
-
==============================
1.문서별로, 먼저 구문 분석 트리를 만듭니다.
문서별로, 먼저 구문 분석 트리를 만듭니다.
import BeautifulSoup html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>" soup = BeautifulSoup.BeautifulSoup(html)
직접 부모가
인 태그의 경우와 같이 검색합니다. for ana in soup.findAll('a'): if ana.parent.name == 'td': print ana["href"]
==============================2.이 같은?
이 같은?
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) anchors = [td.find('a') for td in soup.findAll('td')]
그것은 당신이 제공하는 html의 각 "td"안에있는 첫 번째 "a"를 찾아야합니다. 좀 더 구체적으로하기 위해 td.find를 조정할 수도 있고, 각 TD 내에 여러 개의 링크가있는 경우 findAll을 사용할 수도 있습니다.
업데이트 : Daniele의 덧글입니다. 목록에 아무 것도 없음을 확인하려면 다음과 같이 목록 이해를 수정할 수 있습니다.
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) anchors = [a for a in (td.find('a') for td in soup.findAll('td')) if a]
기본적으로 td.find ( 'a')가 반환 한 실제 요소가 있는지 확인하기위한 검사를 추가합니다.
from https://stackoverflow.com/questions/1058599/how-to-get-a-nested-element-in-beautiful-soup by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 사전 갱신 시퀀스 요소 # 0은 길이가 3이고; 2가 필요합니다. (0) 2018.11.09 [PYTHON] csv 파일을 사전 목록으로 변환 (0) 2018.11.09 [PYTHON] Django 템플릿에서 Humanize를 사용하여 "x 일 전"유형 시간을 표시하는 방법은 무엇입니까? (0) 2018.11.09 [PYTHON] 함수 호출 세부 정보를 출력하는 데코레이터 - 매개 변수 이름과 유효 값 (0) 2018.11.09 [PYTHON] TypeError : object ()는 __new__을 정의한 후에 매개 변수를 사용하지 않습니다. (0) 2018.11.09