2016-07-22 12 views
1

私はテーブルでビルドされたウェブサイトをスクラップしようとしています。ここにページの例のリンク:http://www.rc2.vd.ch/registres/hrcintapp-pub/companyReport.action?rcentId=5947621600000055031025&lang=FR&showHeader=falseスクラップテーブルHTML with beautifulSoup

私の目標は、名前と姓を取得することです:Lass Christian(以下のスクリーンショット)。

enter image description here 私は既に多くのウェブサイトを削ってきましたが、これを進める方法は全くありません。 ID /クラスタグのない「テーブル」しかないので、どこから始めるのか分かりません。

<table border="1" cellpadding="1" cellspacing="0" width="100%"> 
 
\t \t \t <tbody><tr bgcolor="#f0eef2"> 
 
\t \t \t \t 
 
\t \t \t \t <th colspan="3">Associés, gérants et personnes ayant qualité pour signer</th> 
 
\t \t \t </tr> 
 
\t \t \t <tr bgcolor="#f0eef2"> 
 
\t \t \t \t 
 
\t \t \t \t <th> 
 
\t \t \t \t \t <a class="hoverable" onclick="document.forms[0].rcentId.value='5947621600000055031025';document.forms[0].lang.value='FR';document.forms[0].searchLang.value='FR';document.forms[0].order.value='N';document.forms[0].rad.value='N';document.forms[0].goToAdm.value='true';document.forms[0].showHeader.value=false;document.forms[0].submit();event.returnValue=false; return false;"> 
 
\t \t \t \t \t \t Nom et Prénoms, Origine, Domicile, Part sociale 
 
\t \t \t \t \t </a> 
 
\t \t \t \t \t 
 
\t \t \t \t </th> 
 
\t \t \t \t <th> 
 
\t \t \t \t \t <a class="hoverable" onclick="document.forms[0].rcentId.value='5947621600000055031025';document.forms[0].lang.value='FR';document.forms[0].searchLang.value='FR';document.forms[0].order.value='F';document.forms[0].rad.value='N';document.forms[0].goToAdm.value='true';document.forms[0].showHeader.value=false;document.forms[0].submit();event.returnValue=false; return false;"> 
 
\t \t \t \t \t \t Fonctions 
 
\t \t \t \t \t </a> 
 
\t \t \t \t \t 
 
\t \t \t \t \t \t <img src="/registres/hrcintapp-pub/img/down_r.png" align="bottom" border="0" alt=""> 
 
\t \t \t \t \t 
 
\t \t \t \t </th> 
 
\t \t \t \t <th>Mode Signature</th> 
 
\t \t \t </tr> 
 
\t \t \t 
 
\t \t \t \t <tr bgcolor="#ffffff"> 
 
\t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t \t <td> 
 
\t \t \t \t \t \t <span style="text-decoration: none;"> 
 
\t \t \t \t \t \t \t Lass Christian, du Danemark, à Yverdon-les-Bains, avec 200 parts de CHF 100 
 
\t \t \t \t \t \t </span> 
 
\t \t \t \t \t </td> 
 
\t \t \t \t \t <td><span style="text-decoration: none;">associé gérant </span>&nbsp;</td> 
 
\t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t \t \t <td><span style="text-decoration: none;">signature individuelle</span>&nbsp;</td> \t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t </tr> 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t </tbody></table>

+0

名前が付いた単一の行だけが必要ですか? –

+0

はい私は* Lass Christian *を取得したいと考えていますが、ウェブサイトのすべてのページが同じではない場合もあります。だから私はあらゆる種類のページの名前を取得する方法を探したい。 – jjyoh

答えて

2

あなたはあなたが必要なものを得るためにさまざまな方法を持っていることを持っていると、このページから名前を取得しますが、テーブルには、右IDADMとアンカーの後です:

from bs4 import BeautifulSoup 
import requests 

r = requests.get('http://www.rc2.vd.ch/registres/hrcintapp-pub/companyReport.action?rcentId=5947621600000055031025&lang=FR&showHeader=false') 


soup = BeautifulSoup(r.content,"lxml") 
table = soup.select_one("#adm").find_next("table") 
name = table.select_one("td span[style^=text-decoration:]").text.split(",", 1)[0].strip() 
print(name) 

出力:

Lass Christian 

または:

table = soup.select_one("#adm").find_next("table") 
name = table.find("tr",bgcolor="#ffffff").td.span.text.split(",", 1)[0].strip() 
+1

ありがとうございます!それは完全に動作します! – jjyoh

+0

いいえ、あなたは大歓迎です。 –

+1

すてきな答えをよろしくお願いします...私の学習も増しました! – John

0

このような何か:

ここではHTMLコードのexempleですか?

results = soup.find_all("tr", {"bgcolor" : "#ffffff"}) 
for result in results: 
    the_name = result.td.span.get_text().split(',')[0] 
+0

良いアイデア!しかし、私は2番目の部分を取得しません:result.td.span.get_text()。split( '、')[0]?それは私を返しますAttributeError: 'NoneType'オブジェクトには属性 'get_text'がありません。どう思いますか ? – jjyoh

+0

アイデアは、 'td'要素を見てから、' span'要素を探します。そのエラーが意味することは、このツリーが 'tr'要素の1つで見つからなかったということです。たぶんそこに 'print'文を追加して、あなたがそれらのどれかを見つけているか確かめてください。申し訳ありませんが、今私はそれをテストできる場所にいませんが、私は後でなります。 – John