2013-05-01 11 views
12

मैं एक वेबसाइट को पार्स और BeautifulSoup.findAll के साथ कुछ जानकारी पाने के लिए कोशिश कर रहा हूँ, लेकिन यह उन सब को नहीं मिल रहा है .. मैं python3ब्यूटीफुल सूप findAll उन्हें नहीं मिल रहा है सब

उपयोग कर रहा हूँ कोड है इस

#!/usr/bin/python3 

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

page = urlopen ("http://mangafox.me/directory/") 
# print (page.read()) 
soup = BeautifulSoup (page.read()) 

manga_img = soup.findAll ('a', {'class' : 'manga_img'}, limit=None) 

for manga in manga_img: 
    print (manga['href']) 

यह केवल उनमें से आधे प्रिंट ...

उत्तर

45

अलग एचटीएमएल पारसर्स टूटा HTML के साथ अलग ढंग से सौदा। यही कारण है कि पेज टूटा एचटीएमएल में कार्य करता है, और lxml पार्सर बहुत अच्छी तरह से यह के साथ काम नहीं कर रहा है: मानक पुस्तकालय html.parser इस विशेष पेज के साथ कम परेशानी होती है

>>> import requests 
>>> from bs4 import BeautifulSoup 
>>> r = requests.get('http://mangafox.me/directory/') 
>>> soup = BeautifulSoup(r.text, 'lxml') 
>>> len(soup.findAll('a', {'class' : 'manga_img'})) 
18 

:

>>> soup = BeautifulSoup(r.text, 'html.parser') 
>>> len(soup.findAll('a', {'class' : 'manga_img'})) 
44 

है कि आपके विशिष्ट कोड में अनुवाद urllib का उपयोग करके नमूना, आप इस प्रकार पार्सर निर्दिष्ट करेंगे:

soup = BeautifulSoup(page.read(), 'html.parser') 
+0

धन्यवाद! वह काम किया! :) – Clepto

+0

वाह। इससे मुझे टेबल पर अपने सिर को टक्कर देने से बचाया गया। आप कैसे जानते थे कि एलएक्सएमएल पार्सर में समस्याएं थीं (स्पष्ट रूप से यह केवल 18 पंक्तियों को वापस कर रहा था)। यानी मुझे यह कैसे पता होना चाहिए कि यह चुपचाप पंक्तियों की गलत संख्या के अलावा एक समस्या थी? – FuriousGeorge

+7

अनुभव; ज्यादातर लोगों को एसओ पर मदद करने के माध्यम से। –

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