2012-09-09 18 views
15

मैं पाइथन के साथ एक HTML फ़ाइल को पार्स करना चाहता हूं, और मैंने जो मॉड्यूल इस्तेमाल किया वह सुंदरसप है।सुंदरसूप ढूंढें सभी find_all

बाद मैं इसका इस्तेमाल किया, कुछ अजीब happened.It कहा जाता है कि समारोह "find_all"

के रूप में "findAll" एक ही है, लेकिन मैं उन दोनों की कोशिश की है। लेकिन यह अलग है।

क्या कोई मुझे अलग बता सकता है?

import urllib, urllib2, cookielib 
from BeautifulSoup import * 
site = "http://share.dmhy.org/topics/list?keyword=TARI+TARI+team_id%3A407" 

rqstr = urllib2.Request(site) 
rq = urllib2.urlopen(rqstr) 
fchData = rq.read() 

soup = BeautifulSoup(fchData) 

t = soup.findAll('tr') 
print t 
+2

BeautifulSoup का कौन सा संस्करण उपयोग कर रहे हैं? यदि आप बीएस 4 का उपयोग करना चाहते हैं, तो आयात 'bs4 आयात सुंदर सूप' से होना चाहिए। देखें http://www.crummy.com/software/BeautifulSoup/bs4/doc/#porting-code-to-bs4 – marchelbling

+1

क्या अंतर है? मेरा मतलब है, आपने कहा था कि आप दोनों का इस्तेमाल करते थे और आपने एक अंतर देखा था। क्या आप कुछ आउटपुट पोस्ट कर सकते हैं जो विभिन्न व्यवहार दिखाता है? या आप पूछ रहे हैं कि दो विधियां क्यों हैं जो एक ही काम करती हैं? उस मामले में मार्टिजन पीटर सही है। – Bakuriu

+0

find_all: यह मॉड्यूल नहीं मिला findAll: यह HTML कोड के कई हिस्सों को मिला। – Oberon

उत्तर

33

सुंदर सूप संस्करण 4 में, विधियां बिल्कुल वही हैं; मिश्रित केस संस्करण (findAll, findAllNext, nextSibling, आदि) का नाम बदलकर Python style guide के अनुरूप किया गया है, लेकिन पुराना नाम पोर्टिंग को आसान बनाने के लिए अभी भी उपलब्ध हैं। पूरी सूची के लिए Method Names देखें।

नए कोड में, आप लोअरकेस संस्करण है, तो find_all, आदि

अपने उदाहरण में हालांकि, आप BeautifulSoup उपयोग कर रहे हैं संस्करण 3 (बंद मार्च 2012 के बाद से, उसका उपयोग नहीं करते इस्तेमाल करना चाहिए यदि आप इसकी मदद कर सकते हैं), जहां केवल findAll() उपलब्ध है। अज्ञात विशेषता नाम (जैसे कि .find_all, जो केवल सुंदर सूप 4 में उपलब्ध है) को इस तरह माना जाता है कि आप उस नाम से टैग खोज रहे हैं। आपके दस्तावेज़ में <find_all> टैग नहीं है, इसलिए None उसके लिए वापस कर दिया गया है।

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