python - tutorial - ক্লাস দ্বারা উপাদান খুঁজে কিভাবে




python wiki (6)

ক্লাস দ্বারা উপাদান খুঁজে কিভাবে

আমি Beautiesoup ব্যবহার করে "বর্গ" গুণাবলী সঙ্গে এইচটিএমএল উপাদান পার্সিং সমস্যা হচ্ছে।

আপনি সহজে এক বর্গ দ্বারা খুঁজে পেতে পারেন, কিন্তু যদি আপনি দুটি ক্লাসের ছেদ দ্বারা সন্ধান করতে চান, এটি একটু বেশি কঠিন,

ডকুমেন্টেশন থেকে (জোর যোগ করা):

যদি আপনি দুটি বা আরও বেশি CSS ক্লাসের সাথে মেলে এমন ট্যাগগুলির জন্য অনুসন্ধান করতে চান তবে আপনাকে CSS সিলেক্টর ব্যবহার করতে হবে:

css_soup.select("p.strikeout.body")
# [<p class="body strikeout"></p>]

স্পষ্ট হতে, এই শুধুমাত্র পি ট্যাগ নির্বাচন করে যা স্ট্রাইকআউট এবং শরীরের উভয় শ্রেণী।

ক্লাসগুলির একটি সেটের মধ্যে class_ জন্য ( class_ নয়, তবে ইউনিয়ন) সন্ধান করার জন্য, আপনি class_ কীওয়ার্ড আর্গুমেন্টের একটি তালিকা দিতে পারেন (4.1.2 হিসাবে):

soup = BeautifulSoup(sdata)
class_list = ["stylelistrow"] # can add any other classes to this list.
# will find any divs with any names in class_list:
mydivs = soup.find_all('div', class_=class_list) 

এছাড়াও এটি লক্ষ্য করুন যে সমস্তকে CamelCase থেকে আরও পাইথনিক find_all নামকরণ করা হয়েছে।

আমি Beautiesoup ব্যবহার করে "বর্গ" গুণাবলী সঙ্গে এইচটিএমএল উপাদান পার্সিং সমস্যা হচ্ছে। কোড এই মত দেখায়

soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div')
for div in mydivs: 
    if (div["class"]=="stylelistrow"):
        print div

স্ক্রিপ্টটি শেষ হওয়ার পরে "একই" লাইনে একই লাইন পেয়েছি।

File "./beautifulcoding.py", line 130, in getlanguage
  if (div["class"]=="stylelistrow"):
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 599, in __getitem__
   return self._getAttrMap()[key]
KeyError: 'class'

আমি কিভাবে পরিত্রাণ বা এই ত্রুটি পেতে পারি?



একটি সোজা এগিয়ে উপায় হবে:

soup = BeautifulSoup(sdata)
for each_div in soup.findAll('div',{'class':'stylelist'}):
    print each_div

আপনি findAll এর আসন গ্রহণ নিশ্চিত করুন, এটি খুঁজে পাওয়া যায় না


এটা আমার জন্য কাজ করেছে:

for div in mydivs:
    try:
        clazz = div["class"]
    except KeyError:
        clazz = ""
    if (clazz == "stylelistrow"):
        print div

ডকুমেন্টেশন থেকে:

সুন্দর সূপ 4.1.2 হিসাবে, আপনি কীওয়ার্ড আর্গুমেন্ট class_ ব্যবহার করে CSS শ্রেণী দ্বারা অনুসন্ধান করতে পারেন :

soup.find_all("a", class_="sister")

এই ক্ষেত্রে যা হবে:

soup.find_all("div", class_="stylelistrow")

এটি জন্য কাজ করবে:

soup.find_all("div", class_="stylelistrowone stylelistrowtwo")

ডিভিতে প্রথম শ্রেণির গুণাবলী আছে কি না তা পরীক্ষা করার চেষ্টা করুন:

soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div')
for div in mydivs:
    if "class" in div:
        if (div["class"]=="stylelistrow"):
            print div






beautifulsoup