2017-07-03 7 views
1

に結果を書き、私はウェブサイトから選択テキストを抽出しようとしています[https://data.gov.au/dataset?q=&groups=business&sort=extras_harvest_portal%20asc%2C%20score%20desc%2C%20metadata_modified%20desc&_organization_limit=0&organization=reservebankofaustralia&_groups_limit=0]美しいスープを使用して、選択テキストを抽出し、CSV

、美しいスープを使用してコードを書かれている: `

wiki = "https://data.gov.au/dataset?q=&groups=business&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&organization=reservebankofaustralia&_groups_limit=0" 
page= urllib.request.urlopen(wiki) 
from bs4 import BeautifulSoup 
import re 
soup = BeautifulSoup(page) 
data2 = soup.find_all('h3', class_="dataset-heading") 

data3 = [] 
getdata = [] 
for link in data2: 
    data3 = soup.find_all("a", href=re.compile('/dataset/', re.IGNORECASE)) 
for data in data3: 
     getdata = data.text 
     print(getdata) 

len(getdata) 
` 

私のHTMLがあります以下のような:

<a href = "/dataset/banks-assets, class = "label" data-format = "xls">XLS<\a>

私は上記のコードを実行していますが、 'XLS'という単語が代わりに来ていますが、 'XLS'を削除したいのですが、残りのテキストを1列で解析したいと思います。出力は

  • 銀行 - 資産
  • XLS
  • 連結エクスポージャー - 即時およびUltimate リスク根拠
  • XLS
  • 外国為替取引と 公式区のホールディングス資産
  • XLS
  • 金融企業や一般フィナンシェ - 選択された資産および負債
  • XLS
  • 負債および資産 - 月刊XLS連結エクスポージャー - 差し迫ったリスクの基礎 - 国別 国際クレーム
  • XLS など.......

上記の出力がリストであるかどうかを確認しました。それはリストを与えられましたが、要素は1つしかありませんが、上に示したように、出力は多くのテキストです。 私を助けてください。

答えて

1

目的は結果だけ列からXLSの行を削除する場合、例えば、THSの道を行くことができます。

from urllib.request import urlopen 
wiki = "https://data.gov.au/dataset?q=&groups=business&sort=extras_harvest_portal+asc%2C+score+desc%2C+metadata_modified+desc&_organization_limit=0&organization=reservebankofaustralia&_groups_limit=0" 
page= urlopen(wiki) 
from bs4 import BeautifulSoup 
import re 
soup = BeautifulSoup(page) 
data2 = soup.find_all('h3', class_="dataset-heading") 

    data3 = [] 
    getdata = [] 
    for link in data2: 
     data3 = soup.find_all("a", href=re.compile('/dataset/', re.IGNORECASE)) 
    for data in data3: 
     if data.text.upper() != 'XLS': 
      getdata.append(data.text) 
    print(getdata) 

あなたはあなたが必要なテキストでリストを取得します。次に、たとえばDataFrameに簡単に変換できます。このデータは列として表示されます。

import pandas as pd 
df = pd.DataFrame(columns=['col1'], data=getdata) 

出力:

            col1 
0          Banks – Assets 
1 Consolidated Exposures – Immediate and Ultimat... 
2 Foreign Exchange Transactions and Holdings of ... 
3 Finance Companies and General Financiers – Sel... 
4     Liabilities and Assets – Monthly 
5 Consolidated Exposures – Immediate Risk Basis ... 
6  Consolidated Exposures – Ultimate Risk Basis 
7 Banks – Consolidated Group off-balance Sheet B... 
8  Liabilities of Australian-located Operations 
9 Building Societies – Selected Assets and Liabi... 
10 Consolidated Exposures – Immediate Risk Basis ... 
11   Banks – Consolidated Group Impaired Assets 
12 Assets and Liabilities of Australian-Located O... 
13          Managed Funds 
14   Daily Net Foreign Exchange Transactions 
15  Consolidated Exposures-Immediate Risk Basis 
16         Public Unit Trust 
17       Securitisation Vehicles 
18   Assets of Australian-located Operations 
19     Banks – Consolidated Group Capital 

CSVに置く:

df.to_csv('C:\Users\Username\output.csv') 
+0

@Arti、任意のフィードバックを?コメント?それはあなたにとって有益でしたか? –

+0

@ Dmitriy、それは私が新しいことを学んだが、事前に物事をdictに変換したときに役立った、あなたは私の答えの投稿を見ることができます。しかし、そこにも私は物事をcsvに入れて立ち往生しています。それを調べて助けてください.- Arti123 – Arti123

+0

@Arti、データをcsvに入れる最も簡単な方法は、私のソリューションの一番下の行に追加したメソッドを使用しています) 後であなたのコードをチェックします。 私の答えが合っていれば、緑色のチェックマークを付けることでそれを受け入れることができますか? –

関連する問題