0
我目前從Crunchbase獲取有關公司概述的信息。 API信息可從here獲取。Python中換行符的移除問題
在簡單的步驟中,我想獲取名稱,永久鏈接,描述和概述,並將其插入MySQL數據庫。 要做到這一點,我有以下代碼:
url = "http://api.crunchbase.com/v/1/company/%s.js?api_key=<insert_api_key>" % permalink
i = 1
TIME = 5
TRYS = 3
while True:
try:
fh = urllib2.urlopen(url)
cont = fh.read()
fh.close()
data = json.loads(cont)
except Exception as ex:
print ex
print "Sleep %d seconds to try again" % (TIME * i)
time.sleep(TIME * i)
i += 1
if i > TRYS:
INVALID.append(url)
data = None
overview = data.get("overview")
overview = strip_tags(overview).replace('\n','')
sql_data = {
"name": data.get("name").replace('"', "'"),
"permalink": data.get("permalink", ""),
"description": data.get("description","").replace('\n',''),
"overview": overview
}
keys = sql_data.keys()
#print keys
sql = """insert into %s(%s) values (""" % (TABLE, "`".join(keys))
for index, k in enumerate(keys):
if index < len(keys)-1:
sql += '''"%s",''' % sql_data.get(k, "")
else: sql += sql_data.get(k,'')
sql += """)"""
請注意,我將這段代碼的末尾添加strip_tags
功能。
無論如何,我碰到了一個絆腳石。我試圖通過使用.replace('\n','')
去除新行\n
,使得U在overview
和description
上都這樣做。我也嘗試通過使用[\n]+
刪除所有換行符。但我仍然在每一家公司都遇到錯誤。這樣的一個錯誤是:
(1064, '[34816] syntax error: syntax error near "Management"\nLINE: ...agement software.","adventnet","AdventNet",Server Management...\n ^')
3: downloading adventnet failed
打印出來的時候,公司的概況是:
艾德威特現在是百會ManageEngine的。
Founded in 1996, AdventNet has served a diverse range of enterprise IT, networking and telecom customers.
AdventNet supplies server and network management software.
insert into crunchbase_overview_company(overview`permalink`name`description) values ("AdventNet is now Zoho ManageEngine.
Founded in 1996, AdventNet has served a diverse range of enterprise IT, networking and telecom customers.
這顯然有新的行,即使明顯做了一些事情應該刪除它們!
有沒有人有任何建議,提示,提示指針如何處理這個問題?
地帶標籤功能:
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
這就是您在'overview = strip_tags(overview).replace('\ n','')'後打印(概覽)時所得到的結果嗎? – 2rs2ts
我不理解。概述「AdventNet現在是Zoho ManageEngine」?或者是概述它後面的輸出塊?第一個顯然沒有新線。第二個是,但那不是你剝去新線的原因,是嗎? – CodeMonkey
strip_tags確實做了什麼?如果我複製這個代碼沒有strip_tags,使用overview.replace('\ n','')工作得很好。 – dano