bs4.FEatureNotFound: আপনার অনুরোধ করা বৈশিষ্ট্য সহ একটি বৃক্ষ নির্মাতা খুঁজে পেলেন না: lxML। আপনার কি পার্সার লাইব্রেরি ইনস্টল করার দরকার আছে?


222
...
soup = BeautifulSoup(html, "lxml")
File "/Library/Python/2.7/site-packages/bs4/__init__.py", line 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

আমার টার্মিনালের উপরের ফলাফলগুলি। আমি ম্যাক ওএস 10.7.x এ আছি আমি পাইথন ২.7.১ পেয়েছি এবং বিউটিফুল স্যুপ এবং এলএক্সএমএল পেতে এই টিউটোরিয়ালটি অনুসরণ করেছি, যা উভয়ই সাফল্যের সাথে ইনস্টল করা হয়েছে এবং এখানে অবস্থিত একটি পৃথক পরীক্ষা ফাইলের সাথে কাজ করে । পাইথন স্ক্রিপ্ট যা এই ত্রুটির কারণ ঘটায়, আমি এই লাইনটি অন্তর্ভুক্ত করেছি: from pageCrawler import comparePages এবং পৃষ্ঠা ক্রলার ফাইলটিতে আমি নিম্নলিখিত দুটি লাইন অন্তর্ভুক্ত করেছি: from bs4 import BeautifulSoup from urllib2 import urlopen

সমস্যাটি কী এবং এটি কীভাবে সমাধান করা যায় তা নির্ধারণে যে কোনও সহায়তা প্রশংসিত হবে।


1
এই উত্তরটি দেখুন - স্ট্যাকওভারফ্লো
মোঃ মহসিন

কি htmlএকটি url বা HTML বিষয়বস্তু?
tommy.carstensen

উত্তর:


226

আমার সন্দেহ আছে যে বিএস এইচটিএমএল পড়তে ব্যবহার করবে এমন পার্সারের সাথে সম্পর্কিত। এগুলির নথি এখানে রয়েছে , তবে আপনি যদি আমার মতো হন (ওএসএক্স) আপনি এমন কিছু নিয়ে আটকে থাকতে পারেন যার জন্য কিছুটা কাজের প্রয়োজন হয়:

আপনি লক্ষ্য করবেন যে উপরের BS4 ডকুমেন্টেশন পৃষ্ঠায়, তারা চিহ্নিত করেছেন যে ডিফল্টরূপে BS4 পাইথন অন্তর্নির্মিত এইচটিএমএল পার্সার ব্যবহার করবে। ধরে নিই যে আপনি ওএসএক্সে রয়েছেন, পাইথনের অ্যাপল-বান্ডিল সংস্করণটি ২.7.২ যা চরিত্র বিন্যাসের জন্য হালকা নয়। আমি এই একই সমস্যায় পড়েছি, তাই আমি পাইথনের আমার সংস্করণটি এটিকে ঘিরে কাজ করার জন্য আপগ্রেড করেছি। ভার্চুয়ালেনভে এটি করা অন্যান্য প্রকল্পগুলিতে বাধা হ্রাস করবে।

যদি তা করে ব্যথার মতো শোনায়, আপনি LXML পার্সারে যেতে পারেন:

pip install lxml

এবং তারপরে চেষ্টা করুন:

soup = BeautifulSoup(html, "lxml")

আপনার দৃশ্যের উপর নির্ভর করে, এটি যথেষ্ট ভাল হতে পারে। পাইথনের আমার সংস্করণটি আপগ্রেড করার জন্য এটি যথেষ্ট বিরক্তিকর বলেছি। ভার্চুয়ালেনভ ব্যবহার করে আপনি আপনার প্যাকেজগুলি মোটামুটি সহজেই স্থানান্তর করতে পারেন।


1
python -c 'import requests ; from bs4 import BeautifulSoup ; r = requests.get("https://www.allrecipes.com/recipes/96/salad/") ; soup = BeautifulSoup(r.text, "lxml") '
পাইপ

আমার ভার্চুয়াল env, আমার ইনস্টল করা প্রয়োজন requests, bs4এবং lxmlসামনে BeautifulSoupআমার ওয়েব পেজ কন্টেন্ট পার্স হবে।
noobninja

Uff! ম্যাড ম্যাক, আমি জানি না কখন আমি ম্যাক কেনার সিদ্ধান্ত নিয়ে আফসোস করা বন্ধ করব!
ইকরা।

48

বাক্সটি বেসথের জন্য বিএস 4 সহ পাইথন ইনস্টল করা থাকে তবে আপনি আপনার এক্সএমএল দিয়ে প্রক্রিয়া করতে পারেন

soup = BeautifulSoup(html, "html5lib")

তবে আপনি যদি ফর্ম্যাটার = 'xML' ব্যবহার করতে চান তবে আপনার প্রয়োজন

pip3 install lxml

soup = BeautifulSoup(html, features="xml")

3
নতুনভাবে সজ্জিত দূরবর্তী সার্ভারে, এইচটিএমএল 5 লিব আমার জন্য বাক্সটির বাইরে কাজ করেনি। আমাকে এখনও একটি pip install html5libকাজ করতে হয়েছিল, তারপরে সবকিছু ঠিকঠাক কাজ করেছে।
পিটারকোলস

আমার জন্য কাজ করেনি: bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html5lib. Do you need to install a parser library?আমি যদি এটি পরিবর্তন html.parserএটি কাজ করে
8bitjunkie

41

আমি পাইথন এইচটিএমএল পার্সারে অন্তর্নির্মিত পছন্দ করেছি, কোনও ইনস্টল নেই কোনও নির্ভরতা নেই

soup = BeautifulSoup(s, "html.parser")


এটি পূর্ববর্তী কাজ করে না এমন সময়ে @ অর্স্টে কাজ করে। ধন্যবাদ!
adrCoder

14

আমি পাইথন ৩.6 ব্যবহার করছি এবং এই পোস্টে আমার একই মূল ত্রুটি ছিল। আমি কমান্ড চালানোর পরে:

python3 -m pip install lxml

এটা আমার সমস্যা সমাধান করেছে


ডকারে এটিও প্রয়োজনীয়apt install python-lxml
ওয়াল্টার

14

আপনার সমস্ত প্রাসঙ্গিক প্যাকেজ ইনস্টল করা আছে তা নিশ্চিত করতে এই তিনটি কমান্ড চালান:

pip install bs4
pip install html5lib
pip install lxml

তারপরে আপনার পাইথন আইডিই পুনরায় চালু করুন, যদি প্রয়োজন হয়।

এটি এই সমস্যা সম্পর্কিত কোনও কিছুর যত্ন নেওয়া উচিত।


1
এটিই আসল সমাধান।
জন স্টাড

8

LxML ব্যবহারের পরিবর্তে html.parser ব্যবহার করুন, আপনি কোডের এই অংশটি ব্যবহার করতে পারেন:

soup = BeautifulSoup(html, 'html.parser')

2
vendor.bs.bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html.parser. Do you need to install a parser library?
অ্যালেক্স

4

যদিও বিউটিফুলসাপটি ডিফল্টরূপে এইচটিএমএল পার্সারকে সমর্থন করে আপনি যদি অন্য কোনও তৃতীয় পক্ষের পাইথন পার্সার ব্যবহার করতে চান তবে আপনাকে সেই বাহ্যিক পার্সার (এলএক্সএমএল) ইনস্টল করতে হবে।

soup_object= BeautifulSoup(markup,"html.parser") #Python HTML parser

তবে আপনি যদি কোনও পার্সারটিকে প্যারামিটার হিসাবে নির্দিষ্ট না করেন তবে আপনি একটি সতর্কতা পাবেন যা কোনও পার্সার নির্দিষ্ট করে নেই।

soup_object= BeautifulSoup(markup) #Warnning

অন্য কোনও বাহ্যিক পার্সার ব্যবহার করার জন্য আপনাকে এটি ইনস্টল করতে হবে এবং তারপরে এটি নির্দিষ্ট করা দরকার। মত

pip install lxml

soup_object= BeautifulSoup(markup,'lxml') # C dependent parser 

বাহ্যিক পার্সারের সি এবং পাইথন নির্ভরতা রয়েছে যার কিছু সুবিধা এবং অসুবিধা হতে পারে।


3

আমি একই সমস্যা সম্মুখীন। আমি কারণটি খুঁজে পেয়েছি যে আমার কাছে কিছুটা পুরানো অজগর ছয় প্যাকেজ ছিল।

>>> import html5lib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/html5lib/__init__.py", line 16, in <module>
    from .html5parser import HTMLParser, parse, parseFragment
  File "/usr/local/lib/python2.7/site-packages/html5lib/html5parser.py", line 2, in <module>
    from six import with_metaclass, viewkeys, PY3
ImportError: cannot import name viewkeys

আপনার ছয় প্যাকেজ আপগ্রেড করা সমস্যার সমাধান করবে:

sudo pip install six=1.10.0

sudo pip install six==1.10.0
পিড

2

অজগর পরিবেশে LXML পার্সার ইনস্টল করুন।

pip install lxml

আপনার সমস্যার সমাধান হবে। আপনি একই হিসাবে বিল্ট ইন পাইথন প্যাকেজটি ব্যবহার করতে পারেন:

soup = BeautifulSoup(s,  "html.parser")

দ্রষ্টব্য: পাইথন 3-এ "এইচটিএমএল পার্সার" মডিউলটির নাম পরিবর্তন করে "html.parser" করা হয়েছে to


0

কিছু রেফারেন্সে প্রথমটির পরিবর্তে দ্বিতীয়টি ব্যবহার করুন:

soup_object= BeautifulSoup(markup,'html-parser')
soup_object= BeautifulSoup(markup,'html.parser')

আপনার উত্তরে আপনার আরও কিছুটা বিশদ সরবরাহ করা উচিত
মাইকেল

0

আপনি যে পার্সারটি ব্যবহার করছেন তার কারণে ত্রুটিটি চলে আসছে। সাধারণভাবে, আপনার যদি এইচটিএমএল ফাইল / কোড থাকে তবে আপনাকে ব্যবহার html5libকরতে হবে (ডকুমেন্টেশনটি এখানে পাওয়া যাবে ) এবং যদি আপনার এক্সএমএল ফাইল / ডেটা থাকে তবে আপনাকে ব্যবহারের প্রয়োজন lxml(ডকুমেন্টেশন এখানে পাওয়া যাবে )। আপনি lxmlএইচটিএমএল ফাইল / কোডের জন্যও ব্যবহার করতে পারেন তবে কখনও কখনও এটি উপরে হিসাবে একটি ত্রুটি দেয়। সুতরাং, ডেটা / ফাইলের ধরণের ভিত্তিতে বুদ্ধিমানভাবে প্যাকেজটি বেছে নেওয়া ভাল। আপনি html_parserবিল্ট-ইন মডিউলটিও ব্যবহার করতে পারেন । কিন্তু, এটি কখনও কখনও কাজ করে না।

কোন প্যাকেজটি কখন ব্যবহার করবেন সে সম্পর্কিত বিশদগুলির জন্য আপনি এখানে বিশদটি দেখতে পারেন


0

খালি প্যারামিটারের জন্য সর্বোত্তম উপলব্ধের জন্য একটি সতর্কতা তৈরি হবে।
স্যুপ = বিউটিফুলসপ (এইচটিএমএল)

--------------- / ব্যবহারকারী সতর্কতা: কোনও পার্সার স্পষ্টভাবে নির্দিষ্ট করা হয়নি, তাই আমি এই সিস্টেমের জন্য সেরা উপলব্ধ এইচটিএমএল পার্সার ব্যবহার করছি ("html5lib")। এটি সাধারণত কোনও সমস্যা নয়, তবে আপনি যদি অন্য কোনও সিস্টেমে বা অন্য কোনও ভার্চুয়াল পরিবেশে এই কোডটি চালনা করেন তবে এটি একটি পৃথক পার্সার ব্যবহার করতে এবং ভিন্নভাবে আচরণ করতে পারে ----------------------- ------- /

পাইথন - রূপান্তর পাইথন 3.7.7

পাইচার্ম 19.3.4 সিই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.