2016-05-24 14 views
0

私はデータスクラップに初心者です。これは私の最初のプログラムです。私はpythonでデータをスクラップしてテキストファイルに保存するよう書いています。データをスクラップするために次のコードを書いています。Pythonスクリプトでテキストファイルにスクラップしたデータを書き込む

from bs4 import BeautifulSoup 
import urllib2 
text_file = open("scrap.txt","w") 
url = urllib2.urlopen("http://ga.healthinspections.us/georgia/search.cfm?1=1&f=s&r=name&s=&inspectionType=&sd=04/24/2016&ed=05/24/2016&useDate=NO&county=Appling&") 
content = url.read() 
soup = BeautifulSoup(content, "html.parser") 
type = soup.find('span',attrs={"style":"display:inline-block; font- size:10pt;"}).findAll() 
for found in type: 
    text_file.write(found) 

私はこのプログラムをコマンドプロンプトを使用して実行しますが、それにエラーが表示されます。

c:\PyProj\Scrapping>python sample1.py 
Traceback (most recent call last): 
File "sample1.py", line 9, in <module> 
text_file.write(found) 
TypeError: expected a string or other character buffer object 

ここには何が欠けていますか、または私が追加していないものがあります。ありがとう。

+0

今、あなたが見つけたhtml要素を書いています。文字列を取得するには 'text_file.write(found.string) 'で' text_file.write(found) 'を置き換えてください。 – vds

答えて

0

typeNoneであるかどうかを確認する必要があります。つまり、soup.findは実際に検索したことがありませんでした。

また、typeという名前を使用しないでください。これは組み込みです。

findのように、find_allと同じように、Tagオブジェクトのリスト。 Tagでprintを呼び出すと、文字列表現が表示されます。このオートマトンはfile.writeで呼び出されていません。あなたはattributefoundを書きたいと決心しなければなりません。

+0

応答のためにありがとう、しかし、最後の2行のコードを削除して印刷タイプを書き、cmdそれは基本的に私が取得したいデータを持つ配列であるコマンドプロンプトで私に出力を与える。 – Shaggie

+0

また、forループ内でprint(found)を実行すると、cmdのデータが出力されますが、なぜファイルに書き込まないのですか? – Shaggie

+0

'find'に関する更なる情報で更新されました – renemilk

関連する問題