1 Câu hỏi: Nhận các thẻ giống nhau với nội dung khác nhau từ xml với beautifulsoup

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi đã có xml này:

<dc:type>image fixe</dc:type>
<dc:type>image</dc:type>
<dc:type>still image</dc:type>
<dc:type>dessin</dc:type>
<dc:type>drawing</dc:type>

Tôi muốn tất cả văn bản của tất cả các thẻ "dc: type". Tôi chỉ có thể nhận được lần đầu tiên với soup.find("dc:type").get_text() nhưng khi tôi thử, ví dụ:

for i in soup.find_all("dc:type"):
     type = "|".join(i.get_text())

nó chẳng giúp gì cho tôi Ngoài ra in chỉ soup.find_all("dc:type") không được gì, trong khi in chỉ với tìm thấy có vẻ ổn. Tôi đang làm gì sai?

    
0
1 Câu trả lời                              1                         

Tôi không chắc tại sao nó không hoạt động với bạn. Tôi có tất cả các giá trị.

from bs4 import BeautifulSoup

data='''<dc:type>image fixe</dc:type>
<dc:type>image</dc:type>
<dc:type>still image</dc:type>
<dc:type>dessin</dc:type>
<dc:type>drawing</dc:type>'''

soup=BeautifulSoup(data,'html.parser')
for item in soup.find_all('dc:type'):
 print(item.text)

Đầu ra:

image fixe
image
still image
dessin
drawing

Bạn cũng có thể sử dụng lambda để tìm kiếm tên thẻ.

from bs4 import BeautifulSoup

data='''<dc:type>image fixe</dc:type>
<dc:type>image</dc:type>
<dc:type>still image</dc:type>
<dc:type>dessin</dc:type>
<dc:type>drawing</dc:type>'''

soup=BeautifulSoup(data,'html.parser')
for item in soup.find_all(lambda tag:tag.name=='dc:type'):
 print(item.text)
    
1
2019-05-08 12: 36: 27Z
  1. Tôi không biết tại sao nó không, tôi cũng vậy. Thật là bực bội. Nhưng với lambda hoạt động, vì vậy cảm ơn!
    2019-05-08 12: 41: 34Z
nguồn đặt đây