2017-07-12 2 views
1

Ich habe eine HTML-Datei analysieren, wie folgt:Wie HTML-Datei zwischen spezifischen td-Tags

<table class="files js-navigation-container js-active-navigation-container" data-pjax> 


    <tbody> 
     <tr class="warning include-fragment-error"> 
     <td class="icon"><svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg></td> 
     <td class="content" colspan="3">Failed to load latest commit information.</td> 
     </tr> 

     <tr class="js-navigation-item"> 
      <td class="icon"> 
      <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"/></svg> 
      <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> 
      </td> 
      <td class="content"> 
      <span class="css-truncate css-truncate-target"><a href="/opencv/opencv_contrib/tree/master/.github" class="js-navigation-open" id="01777e4a9846fea5f3fcc8fe40d44680-42b42934be959dcedc7072a2040903d29a440f03" title=".github">.github</a></span> 
      </td> 
      <td class="message"> 
      <span class="css-truncate css-truncate-target"> 
        <a href="/opencv/opencv_contrib/commit/823dea726f260e07b47fb1faf446f4e35a255a6f" class="message" data-pjax="true" title="migration: github.com/opencv/opencv_contrib">migration: github.com/opencv/opencv_contrib</a> 
      </span> 
      </td> 

Ich möchte für die <td class=content> Tag nur Werte zwischen den <a> Tags analysieren. Das heißt, ich möchte nur .github aus dem obigen HTML-Snippet bekommen.

Ich mache wie folgt:

 url = 'https://github.com/opencv/opencv_contrib' 
      page = requests.get(url).text 

    soup = BeautifulSoup(page, 'html.parser') 
    table = soup.find('table', {'class': 'files js-navigation-container js-active-navigation-container'}) 
    for row in table.findAll("a"): 
     print(row.text) 

aber es alles zwischen dem <a> tags druckt. Wie bekomme ich das nur für <td class=content> Tags? in einem td Element

for a in soup.select("td.content a"): 
    print(a.get_text()) 

td.content a würde passen alle a Elemente befinden mit content Klasse Attribut-Wert:

Antwort

1

Sie können mit einem einzigen CSS selector alle Anforderungen erfüllen. Wenn Sie ein einzelnes Element benötigen, verwenden Sie .select_one() anstelle von .select().

Verwandte Themen