문제

td에서 일부 href를 가져오는 데 필요한 구문에 어려움을 겪고 있습니다.테이블, tr 및 td 요소에는 클래스나 ID가 없습니다.

이 예에서 닻을 잡으려면 무엇이 필요합니까?

<tr> <td> <a> ...

감사해요

도움이 되었습니까?

해결책

문서에 따라 먼저 구문 분석 트리를 만듭니다.

import BeautifulSoup
html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>"
soup = BeautifulSoup.BeautifulSoup(html)

그런 다음 해당 항목을 검색합니다. 예를 들어 <a> 직계 부모가 다음인 태그 <td>:

for ana in soup.findAll('a'):
  if ana.parent.name == 'td':
    print ana["href"]

다른 팁

이 같은?

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [td.find('a') for td in soup.findAll('td')]

그러면 제공한 HTML의 각 "td" 내부에서 첫 번째 "a"를 찾아야 합니다.당신은 조정할 수 있습니다 td.find 좀 더 구체적으로 설명하거나 다른 용도로 사용하려면 findAll 각 td 내부에 여러 개의 링크가 있는 경우.

업데이트:Daniele의 의견을 다시 확인하세요. 아무 것도 없는지 확인하고 싶다면 None'이 목록에 있으면 목록 이해를 다음과 같이 수정할 수 있습니다.

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').

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top