2017-08-31 4 views
-1

背景があります.encode( 'utf-8')は何もしていません

私は友人の仕事のための小さなプログラムに取り組んでいます。彼のビジネスでは、彼は彼が働いている会社のウェブサイトのリストを持っているウェブサイトを手動で行きます。リストには何百もの企業があります。彼がしているのは、連絡先情報を入手してExcelに入れることだけです。

は再び、彼は手動でこれを行います...彼はこれをやって時間を過ごすことになりますと述べました。

これをPythonで自動化しようと思います。私は約1ヶ月の経験をもって独学です。

今私は正常にテキストだけのためのウェブサイトを掻き取るプログラムを持っています。しかし、テキストをUnicode文字列のリストに入れますが、何らかの理由でリストをutf-8に変換しないので、私はそれを扱うことができます。

import re 
import urllib 
from bs4 import BeautifulSoup 

#url = raw_input("Please enter a url: ") 

html = urllib.urlopen("http://www.cerecor.com/contact") 
soup = BeautifulSoup(html, "lxml") 
data = soup.findAll(text=True) 

def visible(element): 
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title']: 
     return False 
    elif re.match('<!--.*-->', str(element.encode('utf-8'))): 
     return False 
    return True 

result = filter(visible, data) 

[x.encode('UTF8') for x in result] 
#result = ','.join(result) 
number = u"(\+?1?.?\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[- 
\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})" 

print result 

#numbers = [re.findall(number, x) for x in result] 

出力 [U ' 'は、S uが 'N \'、U'' は、uが 'N \'、uが 'N \'、uが 'N \'、uが 'N \' 、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u ' '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u ' 'Overview'、u '\ n'、u'\ n '、u'\ n'、u''Board Directors '、u'\ n'、u u'Pipeline '、u' \ n '、u' u '\ n'、u'CERC-301 '、u'CERC-611'、u'\ n '、u'CERC-406'、u ' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n ' 、u '\ n'、u'Onview '、u' \ n '、u'News/Events'、u '\ n'、u'C '、u' n '、u'Analystカバレッジ'、u '\ n'、u'Stock Data '、u' \ n '、u'SECファイリング'、u '\ n'、u'Corporate Gov u '\ n'、u ''、u ' s'、u '\ n'、u ''、u '\ n'、u'Careers '、u' \ n u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n' 、u '\ n'、u '\ n'、u '\ n'、 s '、u' \ n '、u " n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n ' u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n' u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u'Company '、u' \ n '、u' u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u'General Inqueries '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n ' u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n' u '\ n'、u '\ n'、u '\ n'、u '\ n'、u'Cerecor、Inc. ' 、u '\ n'、u '\ r \ n 400イーストプラットストリート'、u 'Su \ t \ tBaltimore、MD 21202 \ t \ t '、u' \ n '、u' \ r \ n \ t 電話番号:410-522-8707 \ r \ n \ t \ t '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u'About us'、u '\ n'、u '\ n '、u' \ n '、u' \ n '、u' \ n '、u'Pipeline'、u '\ n'、u ' u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n'、u '\ n' u '\ r \ n \ t \ t \ t \ xa9 2017'、u'Cerecor、Inc. '、u' '、u' \ n '、u' \ n '、u'Privacy 免責事項'、 ' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n '、u' \ n ' 、uは 'N \'、U ' 'は、uは' //汎用ラッパー'、uが 'N \'、U 'は' N \]

一切のアドバイスは参考になります。私はちょうど私が正規表現でそれを検索することができるように、そのテキストまたはリストのすべての文字列のいずれかにそれを取得したい。

+0

をデフォルトのエンコーディングはすでにUTF-8です...参照:https://docs.python.org/3/howto/unicodeを。html – alfasin

+0

正規表現パターンのタイプが文字列のタイプと同じであることを確認してください。あなたの場合、数値はUnicodeですが、xはstr(バイト)です。 – stamaimer

+0

ええ、あなたは正しいです、なぜ私は文字列に変換されていない理由を把握できなかったので、私はユニコードでそれを入れました。 –

答えて

0

の文字列型は、Pythonで不変であるので、x.encode()は、インプレースUnicode文字列を変更するのではなく、エンコードされたバージョンを返していません。

あなたが試すことができます。

result = [x.encode('UTF8') for x in result] 
+0

あなたは人生保護人です。それはいつも開発の妨げになる最も単純なものです、もう一度ありがとう! –

関連する問題