2017-08-31 192 views
-1

一些背景.encode('utf-8')沒有做任何事情

我正在爲一個朋友的業務的小程序工作。在他的業務中,他手動瀏覽了一個網站,該網站上有他所工作的公司網站列表。該名單有數百家公司。他所做的只是獲取聯繫信息並將其放入Excel中。

再次,他手動執行此操作......他說他會花費數小時來完成此操作。

我想嘗試使用Python自動執行此操作。我自學了大約一個月的經驗。

現在我有一個程序,成功地爲網站只是文本刮。但是,它將文本放入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' \ n',u'Home',u'\ n',u'\ n',u'About',u'\ n',u'\ n',u 'Overview',u'\ n',u'Management Team',u'\ n',u'Board of Directors',u'\ n',u u'Pipeline',u'\ n',u' \ n',u'Overview',u'\ n',u'CERC-301',u'\ n',u'CERC-611',u'\ n',u'CERC-406',u' \ n',u'Related Publications '',u'\ n',u'Patient Resources',u'\ n',u'',u'\ n',u'Investors',u'\ n' ,u'\ n',u'Overview',u'\ n',u'News/Events',u'\ n',u'C ',u'\ n',u'Analyst Coverage',u '\ n',u'Stock Data',u'\ n',u'SEC Filings',u'\ n',u'Corporate Gov '''''','','','','','','''','''','''','''' ','','','','','','','','','','','','', ,u'\ n',u'\ n',u'\ n', s',u'\ n',u「我們很樂意聽到您的消息」,u'\ n',u'\ n',u'\ n',u'\ n',u'\ n',u'Contact',u'\ n',u'\ n',u'\ n',u'\ n', u'\ n',u'\ n', n',u'Name',u'\ n',u'\ n',u'\ n',u'\ n',u'Email', u'\ n',u'\ n',u'\ n',u'\ n',u'\ n',u'\ n',u'Company',u'\ n',u'\ n',u'\ n',u'\ n ',u'\ n',u'\ n',u'Select Option',u'\ n',u'General Inqueries',u'\ n 'u'夥伴關係',u'\ n',u'Licensing',u'\ n',u'Public Relat vestor Relations',u'\ n',u'\ n',u'\ n' ,u'\ n',u'\ n',u'Message',u'\ n',u'\ n',u'\ n',u'\ n',u'\ n',u' \ n',u'\ n',u'\ n',u'\ n',u ,u'\ n',u'\ n',u'\ n',u'Cerecor,Inc.' ,u'\ n',u'\ r \ n 400 East Pratt Street',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', 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'\ n',u'\ n',u'\ n',u '''''''''','','','' u'\ r \ n \ t \ t \ t \ xa9 2017',u'Cerecor,Inc.',u'',u'\ n',u'\ n',u'Privacy 免責聲明',u' \ n',u'Sitemap',u'\ n',u'\ n',u'\ n',u'\ n',u'\ n',u'\ n',u'\ n' ,u'\ n',u'',u'// general-wrapper',u'\ n',u'\ n']

任何和所有的建議都會有幫助。我只是想把它歸入一個包含所有文本或列表的字符串,所以我可以用正則表達式來搜索它。

+0

默認的編碼是UTF-8已經...看到:https://docs.python.org/3/howto/unicode。html – alfasin

+0

您應該確保正則表達式模式的類型與字符串的類型相同。在你的情況下,數字是unicode,但是x是str(字節)。 – stamaimer

+0

是啊你是對的,我把它放在unicode只是爲了與它混戰,因爲我無法弄清楚爲什麼他們不轉換爲字符串 –

回答

0

由於字符串類型在python中是不可變的,因此x.encode()不會就地修改unicode字符串,而是返回編碼版本。

你可以試試:

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

你是一個生命的救星。它總是最簡單的東西阻止你開發,再次感謝! –