#jython - р htmlunit-г ашигласан кодыг ажиллуулах функц
def foo(request):
import os
import codecs
url = "http://example.com/"
# энэ дээр бүр терминалаас комманд өгч байгаа юм шиг ажиллуулж
байгаа юм.Энэ л таалагдахгүй байна.
os.system(settings.CRW_JYTHON_PATH+'jython '+settings.PATH+'apps/
bar/htmlunit.py "' + url + '"')
f = codecs.open(settings.PATH+'apps/bar/example.html',
encoding='utf-8', mode='r')
res = f.read()
f.close()
return HttpResponse(res)
# htmlunit.py file-n source
# -*- coding: utf-8 -*-
import codecs
import sys
import os
sys.path.append('/'.join(os.path.abspath(os.path.dirname(__file__)).split("/")
[:-3]))
from FooProject import settings
def main():
hlibs = ['apache-mime4j-0.6.jar',
'commons-codec-1.4.jar',
'commons-collections-3.2.1.jar',
'commons-io-1.4.jar',
'commons-lang-2.4.jar',
'commons-logging-1.1.1.jar',
'cssparser-0.9.5.jar',
'htmlunit-2.8.jar',
'htmlunit-core-js-2.8.jar',
'httpclient-4.0.1.jar',
'httpcore-4.0.1.jar',
'httpmime-4.0.1.jar',
'nekohtml-1.9.14.jar',
'sac-1.3.jar',
'serializer-2.7.1.jar',
'xalan-2.7.1.jar',
'xercesImpl-2.9.1.jar',
'xml-apis-1.3.04.jar']
for l in hlibs:
sys.path.append(settings.CRW_HTMLUNIT_PATH+'lib/'+l)
import com.gargoylesoftware.htmlunit.WebClient as WebClient
import com.gargoylesoftware.htmlunit.BrowserVersion as
BrowserVersion
url = sys.argv[1]
url = url.replace("?_escaped_fragment_=","#!")
webclient = WebClient(BrowserVersion.FIREFOX_3_6) # creating a new
webclient object.
page = webclient.getPage(url) # getting the url
webclient.waitForBackgroundJavaScript(2000);
#for s in page.getByXPath("/html/head/script[@type='text/
javascript']"):
# s.remove()
f = codecs.open(settings.PATH+'apps/web/crw.html',
encoding='utf-8', mode='w')
f.write(page.asXml())
f.close()
if __name__ == '__main__':
main()
Энийг ингэж тусад комманд өгч байгаа юм шиг бишээр sys.path - даа
jython - г нэмээд ч юм уу, арай өөрөө шийдэж болох болов уу?
Баярлалаа.
Хүндэтгэсэн
П.Дэлгэрмөрөн
htmlunit чинь зүгээр л вэб тестлэх сан юм биш үү? тэгэхээр django-той
холих шаардлага байгаа юм уу? зүгээр л тус тусад нь бичээд ажиллуулж
болох юм шиг санагдах юм.
--
Regards
Dulmandakh
http://www.dulmandakh.com
http://www.twitter.com/dulmandakh/
http://www.facebook.com/dulmandakh
хм, тэгвэл django-той холбох ямар хэрэг байгаа юм бэ? crawler-ийг нь
java дээр хийчихэд болох юм биш үү? энд django-той холбох ямар хэрэг
байгааг нэг л харахгүй байна.
http://example.com/?_escaped_fragment_=/ - ийм хүсэлт
/_escaped_fragment_ : гэсэн parametertei / орж ирэхээр нь л crawler
ажиллуулах гээд л байгаан
харин тийм. тэгээд django-той холбох шаардлага байхгүй юм шиг санагдаж
байна. htmlunit чинь ажиллаад бааз руу юмаа чихнэ, django уншиж
үзүүлнэ. ингээд л болох биш үү?
http://www.getwindmill.com/ гээд python дээр бичигдсэн вэб тест хийдэг
програм байна, товч танилцуулгаар бол ajax дэмждэг гэж байна. ашиглаж
байгаагүй.
htmlunit - г ашиглаж "гүүглэ ажакс crawler" хийх гэж байгаа юм.