문제

여기에는 코드를 HTML 파일 내가 탐험 아름다운 스프입니다.

<td width="50%">
    <strong class="sans"><a href="http:/website">Site</a></strong> <br /> 

하고 싶을 얻 <a href> 을 위해 모든 라인가 <strong class="sans"> 과 내부에 있는 <td width="50%">.

그것은 가능한 쿼리 HTML 파일을 사람들을 위해 여러 조건을 사용하여 아름다운 스프?

도움이 되었습니까?

해결책

BeautifulSoup 의 검색 메커니즘을 받아들일 가능는 문서를 표시하는 추천에 대한 귀하의 경우:"필요하신 경우에는 부과하는 복잡하거나 연동에 대한 제한이 태그의 특성,전달 가능한 객체 이름,...".(ok...그들이 말하는 특성에 대한 구체적으로,그러나 조언을 반영한 근본적인 정신을 BeautifulSoup API).

을 원하는 경우에 한 줄:

soup.findAll(lambda tag: tag.name == 'a' and \
tag.findParent('strong', 'sans') and \
tag.findParent('strong', 'sans').findParent('td', attrs={'width':'50%'}))

내가 사용한 람다 이 예제에서는,하지만 실제로 정의할 수도 있습 호출 가능한 기능이 있는 경우 여러 체인 요구 사항을 이 람다는 두 개의 findParent('strong', 'sans') 을 방지하기 위해 통화를 올리는 예외 경우 <a> 태그가 없 strong 부모입니다.를 사용하여 적절한 기능을 만들 수 있는 테스트를 더욱 효율적입니다.

다른 팁

>>> BeautifulSoup.BeautifulSoup("""<html><td width="50%">
...     <strong class="sans"><a href="http:/website">Site</a></strong> <br />
... </html>""" )
<html><td width="50%">
<strong class="sans"><a href="http:/website">Site</a></strong> <br />
</td></html>
>>> [ a for a in strong.findAll("a") 
            for strong in tr.findAll("strong", attrs = {"class": "sans"}) 
                for tr in soup.findAll("td", width = "50%")]
[<a href="http:/website">Site</a>]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top