0
我已經用Python編寫了一個簡單的腳本。Python捲曲寫函數不能在第二次調用
它解析網頁的超鏈接,然後檢索這些鏈接來解析一些信息。
我有類似的腳本運行和重新使用writefunction沒有任何問題,由於某種原因失敗,我不明白爲什麼。
一般捲曲的init:
storage = StringIO.StringIO()
c = pycurl.Curl()
c.setopt(pycurl.USERAGENT, USER_AGENT)
c.setopt(pycurl.COOKIEFILE, "")
c.setopt(pycurl.POST, 0)
c.setopt(pycurl.FOLLOWLOCATION, 1)
#Similar scripts are working this way, why this script not?
c.setopt(c.WRITEFUNCTION, storage.write)
第一次調用中檢索鏈接:
URL = "http://whatever"
REFERER = URL
c.setopt(pycurl.URL, URL)
c.setopt(pycurl.REFERER, REFERER)
c.perform()
#Write page to file
content = storage.getvalue()
f = open("updates.html", "w")
f.writelines(content)
f.close()
... Here the magic happens and links are extracted ...
現在循環這些鏈接:
for i, member in enumerate(urls):
URL = urls[i]
print "url:", URL
c.setopt(pycurl.URL, URL)
c.perform()
#Write page to file
#Still the data from previous!
content = storage.getvalue()
f = open("update.html", "w")
f.writelines(content)
f.close()
#print content
... Gather some information ...
... Close objects etc ...
您可以在循環中嘗試'c.setopt(c.WRITEFUNCTION,f.write)'以避免將數據附加到同一個對象。 'Curl()'是可重用的,這可能就足夠了。 – jfs 2013-05-05 22:55:46
沒有,這不起作用,我以前試過,我認爲這只是通過參考。 是否有可能從第一頁開始的字符串長度太大(與使用Curl和Python進行檢索的其他內容相比,網頁非常大) – honda4life 2013-05-06 17:18:20