私は Web スクレイピングと python (およびそのプログラミング) について学ぼうとしていますが、多くの可能性を提供すると思われる BeautifulSoup ライブラリを見つけました。
このページから適切な情報を引き出す最善の方法を見つけようとしています。
http://www.aidn.org.au/Industry-ViewCompany.asp?CID=3113
これについてもっと詳しく説明できますが、基本的には会社名、それに関する説明、連絡先の詳細、さまざまな会社の詳細/統計などです
この段階では、このデータをきれいに分離してスクレイピングする方法を検討し、後ですべてを CSV などに入れることを検討しています。
BS を使用してさまざまなテーブル データを取得する方法がわかりません。多くの tr タグと td タグがあり、一意のものに固定する方法がわかりません。
私が思いついた最高のものは、最初に次のコードです。
from bs4 import BeautifulSoup
import urllib2
html = urllib2.urlopen("http://www.aidn.org.au/Industry-ViewCompany.asp?CID=3113")
soup = BeautifulSoup(html)
soupie = soup.prettify()
print soupie
そこから正規表現などを使用して、クリーンアップされたテキストからデータを取得します。
しかし、BS ツリーを使用してこれを行うためのより良い方法があるに違いありません。それとも、このサイトは、BS がそれ以上のヘルプを提供しないようにフォーマットされていますか?
それは大きな質問であり、学びたいので完全な解決策を探しているわけではありませんが、私を道に導くためのコードスニペットは大歓迎です。
アップデート
以下の@ZeroPiraeusのおかげで、テーブルを解析する方法を理解し始めています。彼のコードからの出力は次のとおりです。
=== Personnel ===
bodytext Ms Gail Morgan CEO
bodytext Phone: +61.3. 9464 4455 Fax: +61.3. 9464 4422
bodytext Lisa Mayoh Sales Manager
bodytext Phone: +61.3. 9464 4455 Fax: +61.3. 9464 4422 Email: bob@aerospacematerials.com.au
=== Company Details ===
bodytext ACN: 007 350 807 ABN: 71 007 350 807 Australian Owned Annual Turnover: $5M - $10M Number of Employees: 6-10 QA: ISO9001-2008, AS9120B, Export Percentage: 5 % Industry Categories: AerospaceLand (Vehicles, etc)LogisticsMarineProcurement Company Email: lisa@aerospacematerials.com.au Company Website: http://www.aerospacematerials.com.au Office: 2/6 Ovata Drive Tullamarine VIC 3043 Post: PO Box 188 TullamarineVIC 3043 Phone: +61.3. 9464 4455 Fax: +61.3. 9464 4422
paraheading ACN:
bodytext 007 350 807
paraheading ABN:
bodytext 71 007 350 807
paraheading
bodytext Australian Owned
paraheading Annual Turnover:
bodytext $5M - $10M
paraheading Number of Employees:
bodytext 6-10
paraheading QA:
bodytext ISO9001-2008, AS9120B,
paraheading Export Percentage:
bodytext 5 %
paraheading Industry Categories:
bodytext AerospaceLand (Vehicles, etc)LogisticsMarineProcurement
paraheading Company Email:
bodytext lisa@aerospacematerials.com.au
paraheading Company Website:
bodytext http://www.aerospacematerials.com.au
paraheading Office:
bodytext 2/6 Ovata Drive Tullamarine VIC 3043
paraheading Post:
bodytext PO Box 188 TullamarineVIC 3043
paraheading Phone:
bodytext +61.3. 9464 4455
paraheading Fax:
bodytext +61.3. 9464 4422
次の質問は、このデータをスプレッドシートにインポートするのに適した CSV に入れる最良の方法は何ですか? たとえば、「ABN」「ACN」「会社のウェブサイト」などを列見出しとして使用し、対応するデータを行情報として使用します。
助けてくれてありがとう。