2012-03-30 14 views
6

के साथ HTML पार्सिंग मैं http://mobile.de की परिणाम सूची को पार्स करने का प्रयास कर रहा हूं।सुंदर सूप 4 और पायथन

सबसे पहले मैंने इसे HTMLParser कक्षा के साथ करने की कोशिश की, लेकिन मुझे एक त्रुटि मिली: HTMLParser.HTMLParseError: EOF in middle of construct

इसलिए मैंने सुंदरसप 4 के साथ यह कोशिश की जो गैर-मान्य वेबसाइटों के लिए बेहतर है, लेकिन <div> मैं खोज रहा हूं, यह सुलभ नहीं है, और मैं यह नहीं बता सकता कि यह मेरी गलती है या वेबसाइट है।

from bs4 import BeautifulSoup 
    import urllib 
    import socket 

    searchurl = "http://suchen.mobile.de/auto/search.html?scopeId=C&isSearchRequest=true&sortOption.sortBy=price.consumerGrossEuro" 
    f = urllib.urlopen(searchurl) 
    html = f.read() 
    soup = BeautifulSoup(html) 

    for link in soup.find_all("div","listEntry "): 
     print link 

listEntry कारों की परिणाम के साथ <div> है। लेकिन ऐसा लगता है कि वह <form id="parkAndCompareVehicle" name="parkAndCompareVehicle" action=""> पार्स नहीं कर रहा है। मुझे सूपोबजेक्ट में फॉर्म नहीं मिल रहा है।

गलती कहां है? findAll(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)

==========

upd -

for link in soup.findAll('div', {'class': 'listEntry '}): 
    print link 

गुण एक शब्दकोश में निर्दिष्ट कर रहे हैं:

+1

अगर आप पाश के लिए बजाय निम्न प्रयास करें क्या मिलता है? - 'soup.find_all में लिंक के लिए ("फॉर्म", id = "parkAndcompareVehicle") '? (देखें http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#The%20basic%20find%20method:%20findAll(name,%20attrs,%20recursive,%20text,%20limit,%20* * kwargs)) –

+0

मुझे कुछ भी नहीं मिला। मैंने find_all ("फॉर्म") के साथ भी कोशिश की और मुझे केवल 2 अन्य मिलते हैं। – user1010775

+0

hmm 'soup.find_all ('form', id = 'parkAndcompareVehicle') 'मेरे लिए फॉर्म लौटाता है – gorlum0

उत्तर

2

यह कुछ की तरह होना चाहिए। क्षमा करें यह बीएस 4 में लगता है आप भी इस तरह से कर सकते हैं।

गलती के लिए, जिस फ़ॉर्म को आप ढूंढ रहे हैं वह परिणाम में नहीं है क्योंकि यह सूची प्रविष्टियों को जहां तक ​​मैं देख सकता हूं संलग्न करता है।

क्या उस के साथ गलत क्या है:

form = soup.find('form', id='parkAndCompareVehicle') 
print len(form.find_all('div', 'listEntry ')) 
+0

यह सामान है - देखें http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#The%20basic%20find%20method:%20findAll(name, % 20attrs,% 20recursive,% 20text,% 20limit,% 20 ** kwargs) –

+0

यह लगता है (findALL) कि आपका मतलब सुंदर Soup3 है, लेकिन मैं संस्करण 4 का उपयोग कर रहा हूं। अगर मैं find_all ('div', 'btn') का उपयोग करता हूं तो मुझे मिलता है बीटीएन-डीवी की सामग्री। वह गलती नहीं है। देखें [डोकू बीएस 4.0] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all) – user1010775

+0

मैं उस काम को कैसे प्राप्त कर सकता हूं? :/ – user1010775

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