2017-03-15 22 views
0

http://www.americashealthrankings.org/api/v1/downloads/131の "2016年次"テーブルをcsvに抽出しています。テーブルには、STATE、RANK、VALUEの3つのフィールドがあります。次のエラーが表示される:csvへのURLからのPython抽出テーブル

import urllib2 
from bs4 import BeautifulSoup 
import csv 

url = 'http://www.americashealthrankings.org/api/v1/downloads/131' 
header = {'User-Agent': 'Mozilla/5.0'} 
req = urllib2.Request(url,headers=header) 
page = urllib2.urlopen(req) 
soup = BeautifulSoup(page) 

table = soup.find('2016-Annual', {'class': 'STATE-RANK-VALUE'}) 

f = open('output.csv', 'w') 

for row in table.findAll('tr'): 
    cells = row.findAll('td') 

    if len(cells) == 3: 
     STATE = cells[0].find(text=True) 
     RANK = cells[1].find(text=True) 
     VALUE = cells[2].find(text=True) 

    print write_to_file 
    f.write(write_to_file) 

f.close() 

ここでは何が欠けていますか? Pythonの使用2.7

+0

どのようなエラーが表示されますか? – DyZ

+1

'write_to_file'を定義したり、何かを設定することは決してありません – ryugie

答えて

0

Beautifulsoup docsによれば、初期化時に解析する文字列を渡す必要があります。ただし、page = urllib2.urlopen(req)はページへのポインタを返します。

代わりにsoup = BeautifulSoup(page.read(), 'html.parser')を試してみてください。

また、変数write_to_fileは存在しません。

これで解決できない場合は、どのエラーが表示されるのか投稿してください。

1

あなたのコードでは、この 'http://www.americashealthrankings.org/api/v1/downloads/131' は csvファイルをダウンロードし

間違っています。

ローカルコンピュータにcsvファイルをダウンロードすると、このファイルを使用できます。

#!/usr/bin/env python 
# coding:utf-8 
'''黄哥Python''' 

import urllib2 

url = 'http://www.americashealthrankings.org/api/v1/downloads/131' 

html = urllib2.urlopen(url).read() 

with open('output.csv', 'w') as output: 
    output.write(html) 
0

そのが働いていない理由は、すでにCSV形式でファイルにのでご指している - あなたは文字通り、ブラウザでそのURLを読み込むことができますし、それは---- CSVファイル形式でテーブルあなたが期待をダウンロードしますしかし、そのエンドポイントではない - それは、このURLにあります

また

http://www.americashealthrankings.org/explore/2016-annual-report

- 私は私だけthstateと呼ばれるヘッダ、rank、および,value

を参照してください STATE-RANK-VALUEと呼ばれるクラスを参照してくださいいけません
関連する問題