2013-03-27 3 views
7

मैं अजगर में वेबपृष्ठ लेआउट विश्लेषण कर रहा हूं। एक मूल कार्य HTML स्रोत कोड दिए गए तत्वों के आकार को प्रोग्रामेटिक रूप से मापना है, ताकि हम वेबपृष्ठ कॉर्पस के लिए सामग्री/विज्ञापन अनुपात, विज्ञापन ब्लॉक स्थिति, विज्ञापन ब्लॉक आकार का सांख्यिकीय डेटा प्राप्त कर सकें।पायथन का उपयोग कर HTML स्रोत कोड में तत्वों के आकार को प्रोग्रामेटिक रूप से कैसे मापें?

चौड़ाई/ऊंचाई विशेषताओं का उपयोग करने के लिए एक स्पष्ट दृष्टिकोण है, लेकिन वे हमेशा उपलब्ध नहीं होते हैं। इसके अलावा, width: 50% जैसी चीजें डीओएम में लोड होने के बाद गणना की जानी चाहिए। तो मुझे लगता है कि एचटीएमएल स्रोत कोड को विंडो-आकार-पूर्वनिर्धारित ब्राउज़र में लोड करना (जैसे mechanize हालांकि मुझे यकीन नहीं है कि विंडो का आकार सेट किया जा सकता है) कोशिश करने का एक अच्छा तरीका है, लेकिन मशीनीकरण किसी की वापसी का समर्थन नहीं करता है वैसे भी तत्व आकार।

क्या पाइथन में ऐसा करने के लिए कोई सार्वभौमिक तरीका है (चौड़ाई/ऊंचाई विशेषताओं के बिना), अधिमानतः कुछ पुस्तकालय के साथ?

धन्यवाद!

+0

यार, मैं अपने तत्वों IE और Firefox में एक ही आकार के लिए प्रस्तुत करने के लिए नहीं मिल सकता है: उदाहरण गूगल पाठ बॉक्स चौड़ाई पता लगाने के लिए पता चलता है। यदि आयामों की गणना करने के लिए "आधिकारिक" तरीका है, तो आप शर्त लगा सकते हैं कि आधा बाजार उस पर ध्यान देता है और यह अपना स्वयं का तरीका करता है। – Kevin

+1

बस आपको एक दिशा में इंगित करने के लिए - हो सकता है कि वेबकिट और अन्य प्रस्तुतकर्ता आउटपुट के रूप में ऑफ़र करें। स्पष्ट रूप से ट्राइडेंट नहीं मिलेगा, लेकिन डब्ल्यूके/गीको पर्याप्त अच्छा हो सकता है ... – TC1

+0

@ केविन आपकी चिंता निश्चित रूप से मान्य है। लेकिन एक (अनुभवजन्य) शोध उद्देश्य के लिए, मैं ऐसा करने वाले किसी भी ब्राउज़र से चिपके रहूंगा। मैं समझता हूं कि आईई और फ़ायरफ़ॉक्स में कुछ तत्व समान आकार के रूप में प्रस्तुत नहीं किए जाते हैं और मुझे भी भुगतना पड़ता है। लेकिन क्या यह वास्तव में बड़ा अंतर है? मैं यहां कई पिक्सेल बहाव के बारे में चिंतित नहीं हूं :) – ShuaiYuan

उत्तर

1

मैं आप का सुझाव Ghost पर एक नज़र लेने के लिए - वेबकिट वेब क्लाइंट पायथन में लिखा है। इसमें जावास्क्रिप्ट समर्थन है ताकि आप आसानी से जावास्क्रिप्ट कार्यों को कॉल कर सकें और इसके वापसी मूल्य प्राप्त कर सकें।

>>> from ghost import Ghost 
>>> ghost = Ghost() 
>>> ghost.open('https://google.lt') 
>>> width, resources = ghost.evaluate("document.getElementById('gbqfq').offsetWidth;") 
>>> width 
541.0 # google text box width 541px 
+0

यह बहुत उपयोगी है। हालांकि, मेरी इच्छा है कि भूत के पास एक एपीआई दस्तावेज़ है। – ShuaiYuan

0

सभी अंतिम आकारों को ठीक से प्राप्त करने के लिए, आपको सभी सीएसएस स्टाइल शीट्स और संभवतः सभी जावास्क्रिप्ट को ध्यान में रखते हुए सामग्री प्रस्तुत करना होगा। इसलिए, पाइथन प्रोग्राम से आकार प्राप्त करने का एकमात्र तरीका पाइथन में एक पूर्ण वेब ब्राउज़र कार्यान्वयन होना है, ऐसा करने वाली लाइब्रेरी का उपयोग करें, या ब्राउज़र ऑफ-प्रोसेस को दूरस्थ रूप से पायलट करें।

बाद में दृष्टिकोण सेलेनियम उपकरण के उपयोग के साथ किया जा सकता है - जाँच कैसे आप एक अजगर कार्यक्रम यहां के भीतर से जावास्क्रिप्ट भाव का परिणाम प्राप्त कर सकते हैं: Can Selenium web driver have access to javascript global variables?

संबंधित मुद्दे