2012-01-10 14 views
13

मेरा कार्य पाइथन में हेडलेस वेबकिट (PyQt4.QtWebkit) का उपयोग करके Google खोज परिणामों को क्रॉल कर रहा है। मॉड्यूल PyQt4 का उपयोग कर परिणामों को ठीक से क्रॉल कर रहा था। मुझे इस स्क्रिप्ट को अमेज़ॅन ec2 में निष्पादित करना होगा। इसलिए, मुझे Xvfb (ec2 में कोई x सर्वर) का उपयोग करना होगा।xvfb रन त्रुटि ubuntu 11.04

एक ही समय मेरी मॉड्यूल एक loop.So में क्रियान्वित किया जाना है पर, यह में ठीक कुछ iterations.After के लिए कुछ पाशन मॉड्यूल चलाता काम कर रहा था "xvfb रन: त्रुटि: Xvfb प्रारंभ करने में विफल"

इसे कैसे हल किया जाना चाहिए?

for i in range(10): 
    try: 
     query_dict["start"] = i * 10 
     url = base_url + ue(query_dict) 
     flag = True 
     while flag: 
      parsed_dict = main(url) 
      time.sleep(8.4) 
      flag = False 
    except: 
     pass 

मुख्य (यूआरएल):

def main(url): 
    cmd = "xvfb-run python /home/shan/temp/hg_intcen/lib/webpage_scrapper.py"+" "+str(url) 
    print "Cmd EXE:"+ cmd 
    proc = subprocess.Popen(cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE) 
    proc.wait() 
    sys.stdout.flush() 
    result = proc.stdout.readlines() 
    print "crawled: ",result[1] 
    return result 

webpage_scrapper PyQt4 का उपयोग करके सभी एचटीएमएल परिणाम लायेगा

यह मेरा पाशन है। लूपिंग के लिए विफल होने वाले xvfb से कैसे बचें?

+0

मैं अमेज़न EC2 सर्वर उदाहरण – Nava

उत्तर

27

आपको xvfb-run के लिए --auto-servernum पैरामीटर जोड़ने की आवश्यकता है। अन्यथा, यह उसी प्रदर्शन पर Xvfb को स्पैन करने की कोशिश करता है (डिफ़ॉल्ट रूप से :99), जो विफल हो जाएगा यदि आपके पास पहले से चल रहा है।

10

भागो इस तरह,

xvfb-run --auto-servernum --server-num=1 python webpage_scrapper.py http://google.com 
+0

इस महान काम करता है का उपयोग कर रहा हूँ। – Jim

+0

मुझे इस काम का आश्चर्य हुआ है ... आप विवादित तर्कों को पार कर रहे हैं: '--auto-servernum' इसे उपयोगकर्ता को एक मुफ्त प्रदर्शन के लिए कहता है, और '- सर्वर-num = 1' बताता है कि प्रदर्शन 1 का उपयोग होता है .... अपनी जरूरतों के आधार पर एक तर्क या दूसरे का उपयोग करें। –