Ben ve phantomjs biraz olgunlaşıncaya kadar, bu konuya göre 158 http://code.google.com/p/phantomjs/issues/detail?id=158 bu onların için bir baş ağrısı olduğunu buldu.
Yani yine de yapmak istersiniz? Bunu gerçekleştirmek için biraz daha yüksek gitmek için tercih ettik ve bunu ayarlamak, yüklü, https://github.com/allfro/pymiproxy de PyMiProxy üzerinde yakaladı indirdiğiniz, onların örnek kod aldı ve
from miproxy.proxy import RequestInterceptorPlugin, ResponseInterceptorPlugin, AsyncMitmProxy
from mimetools import Message
from StringIO import StringIO
class DebugInterceptor(RequestInterceptorPlugin, ResponseInterceptorPlugin):
def do_request(self, data):
data = data.replace('Accept-Encoding: gzip\r\n', 'Accept-Encoding:\r\n', 1);
return data
def do_response(self, data):
#print '<< %s' % repr(data[:100])
request_line, headers_alone = data.split('\r\n', 1)
headers = Message(StringIO(headers_alone))
print "Content type: %s" %(headers['content-type'])
if headers['content-type'] == 'text/x-comma-separated-values':
f = open('data.csv', 'w')
f.write(data)
print ''
return data
if __name__ == '__main__':
proxy = AsyncMitmProxy()
proxy.register_interceptor(DebugInterceptor)
try:
proxy.serve_forever()
except KeyboardInterrupt:
proxy.server_close()
Sonra onu ateş proxy.py bu yapılan
python proxy.py
Sonraki kadar ben ... belirtilen proxy ile phantomjs yürütmek
phantomjs --ignore-ssl-errors=yes --cookies-file=cookies.txt --proxy=127.0.0.1:8080 --web-security=no myfile.js
Şu tarihte ya da bu tür güvenliğinizi açmak isteyebilirsiniz
, ben olarak şu anda benim için gereksiz oldu Sadece bir kaynağı kazıyorum. Artık proxy konsolunuzdan akan bir sürü metin görmeli ve eğer "text/x-virgülle ayrılmış değerler" mime türüyle bir şeye inerse, onu data.csv olarak kaydedecektir. Bu aynı zamanda tüm başlıkları ve her şeyi kaydedecektir, ama eğer bu kadar ileri giderseniz bunları nasıl çıkaracağınızı anlayabilirsiniz.
Bir başka ayrıntıda, gzip kodlamasını devre dışı bırakmam gerektiğini, zlib kullanabileceğimi ve kendi apache web sunucusundan gzip dosyasındaki verileri açabileceğimi buldum, ancak IIS'den geliyorsa veya böyle bir dekompresyon gerçekleşirse hatalar ve bu bölüm hakkında emin değilim.
Bu yüzden güç şirketim bana bir API sunmuyor mu? İnce! Bunu zor yoldan yapıyoruz!
Teşekkürler NiKo ve sanırım açık değildim, ama html sayfasının değil, diğer tüm kaynakları arıyorum. Harici css veya js dosyasını bir varlığa kaydetmek istiyorum, bu kaynakların içeriği mümkün mü? – iwek
sadece protokolü doğru olarak ayarladığınızdan emin olun (örneğin, http vs https) .. açmaya çalıştığım siteyi anlamaya çalıştığım bir süredir http - https .. yöneltiyordu ve bu da tıkalı casperjs (hata?) – abbood
@ iwek Kaynağın diske nasıl kaydedileceği hakkında daha fazla bilgi edinmek için bu bağlantıya bakın: http://stackoverflow.com/questions/24582307/how-to-save-the-current-webpage-with-casperjs-phantomjs http: //stackoverflow.com/users/1816580/artjom-b – iChux