Bạn có biết tại sao ví dụ đầu tiên trong hướng dẫn của BeautifulSoup http://www.crummy.com/software/BeautifulSoup/documentation.html#QuickStart cho AttributeError: 'NavigableString' object has no attribute 'name'
không? Theo số this answer các ký tự khoảng trắng trong HTML gây ra sự cố. Tôi đã thử với các nguồn của một vài trang và 1 làm việc những người khác đã cho cùng một lỗi (tôi loại bỏ không gian). Bạn có thể giải thích "tên" có đề cập đến không và tại sao lỗi này xảy ra? Cảm ơn.BeautifulSoup: AttributeError: đối tượng 'NavigableString' không có thuộc tính 'name'
Trả lời
name
sẽ đề cập đến tên của thẻ nếu đối tượng là một Tag
đối tượng (ví dụ: <html>
name = "html")
nếu bạn có khoảng trống trong đánh dấu của bạn ở giữa các nút BeautifulSoup sẽ biến những thành NavigableString
'S. Vì vậy, nếu bạn sử dụng chỉ mục của contents
để lấy các nút, bạn có thể lấy một NavigableString
thay vì Tag
tiếp theo.
Để tránh điều này, truy vấn cho nút bạn đang tìm kiếm: Searching the Parse Tree
hoặc nếu bạn biết tên của thẻ tiếp theo bạn muốn, bạn có thể sử dụng tên đó là tài sản và nó sẽ trở lại là người đầu tiên Tag
với tên đó hoặc None
nếu không có trẻ em nào có tên đó tồn tại: Using Tag Names as Members
Nếu bạn muốn sử dụng contents
bạn phải kiểm tra các đối tượng bạn đang làm việc. Các lỗi mà bạn đang nhận được chỉ có nghĩa là bạn đang cố gắng truy cập vào các tài sản tên vì mã giả định đó là một Tag
Bạn có thể sử dụng cố gắng nắm bắt để loại bỏ các trường hợp khi chuỗi điều hướng đã được phân tích trong vòng lặp, như thế này:
for j in soup.find_all(...)
try:
print j.find(...)
except NavigableString:
pass
chỉ cần bỏ qua NavigableString
đối tượng trong khi lặp lại qua cây:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for body_child in soup.body.children:
if isinstance(body_child, NavigableString):
continue
if isinstance(body_child, Tag):
print(body_child.name)
- 1. AttributeError: đối tượng 'module' không có thuộc tính
- 2. AttributeError: đối tượng 'module' không có thuộc tính 'maketrans'
- 3. AttributeError: đối tượng 'tuple' không có thuộc tính
- 4. AttributeError: đối tượng 'RegexURLResolver' không có thuộc tính '_urlconf_module'
- 5. Lỗi Python: AttributeError: đối tượng 'module' không có thuộc tính
- 6. AttributeError: đối tượng 'numpy.ndarray' không có thuộc tính 'thêm'
- 7. AttributeError: đối tượng 'Settings' không có thuộc tính 'ROOT_URLCONF'
- 8. AttributeError: đối tượng 'module' không có thuộc tính 'urlretrieve'
- 9. AttributeError: đối tượng 'WSGIRequest' không có thuộc tính 'phiên'
- 10. AttributeError: đối tượng 'module' (scipy) không có thuộc tính 'misc'
- 11. Python AttributeError: đối tượng 'module' không có thuộc tính 'Serial'
- 12. NumPy AttributeError: đối tượng 'phao' không có thuộc tính 'exp'
- 13. AttributeError: đối tượng 'InstrumentedList' không có thuộc tính
- 14. AttributeError: đối tượng 'str' không có thuộc tính 'iteritems'
- 15. AttributeError: 'module' đối tượng không có thuộc tính
- 16. AttributeError: đối tượng 'long' không có thuộc tính 'fetchall'
- 17. Python: AttributeError: đối tượng 'NoneType' không có thuộc tính 'thêm'
- 18. Thuộc tính PythonError: Đối tượng không có thuộc tính
- 19. Python có nghĩa là gì đối tượng "AttributeError: 'unicode' không có thuộc tính 'has_key'"
- 20. AttributeError: đối tượng 'module' không có thuộc tính 'strptime' - Lỗi có thể xảy ra?
- 21. AttributeError khi truy vấn: đối tượng Cả 'InstrumentedAttribute' cũng không 'sánh' có một thuộc tính
- 22. Không thể truy cập Queue.Empty: đối tượng "AttributeError: 'function' không có thuộc tính 'Empty'"
- 23. tải NumPy tăng "AttributeError: 'module' đối tượng không có thuộc tính 'expr'"
- 24. Cài đặt functools cho tôi đối tượng AttributeError 'module' không có thuộc tính 'compose'
- 25. AttributeError: đối tượng module không có thuộc tính "Series". Mã làm việc trong ipython
- 26. Django App Engine: AttributeError: đối tượng 'AnonymousUser' không có thuộc tính 'backend'
- 27. Python Thư viện hình ảnh: AttributeError: đối tượng 'NoneType' không có thuộc tính XXX
- 28. epydoc AttributeError: đối tượng 'Văn bản' không có thuộc tính 'dữ liệu'
- 29. AttributeError: đối tượng 'list' không có thuộc tính 'click' - Selenium Webdriver
- 30. Python 'AttributeError:' chức năng 'đối tượng không có thuộc tính' min ''
.find_all() dường như chỉ trả lại thẻ con và bỏ qua các khoảng trắng ... –