Hướng dẫn how do you read data between xml tags in python? - làm cách nào để bạn đọc dữ liệu giữa các thẻ xml trong python?

4

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang sử dụng Python và cần tìm và truy xuất tất cả dữ liệu ký tự giữa các thẻ:

I need this stuff

Sau đó tôi muốn xuất dữ liệu tìm thấy vào một tệp khác. Tôi chỉ đang tìm kiếm một cách rất dễ dàng và hiệu quả để làm điều này.

Nếu bạn có thể đăng một đoạn mã nhanh để mô tả sự dễ sử dụng. Bởi vì tôi đang gặp một chút rắc rối khi hiểu các trình phân tích cú pháp.

hỏi ngày 19 tháng 1 năm 2010 lúc 23:07Jan 19, 2010 at 23:07

Đệ quyRecursion

2.8577 Huy hiệu vàng37 Huy hiệu bạc 50 Huy hiệu Đồng7 gold badges37 silver badges50 bronze badges

Không có các mô -đun bên ngoài, ví dụ

>>> myhtml = """ I need this stuff
... blah blah
... I need this stuff too
... 
... blah blah """
>>> for item in myhtml.split[""]:
...   if "" in item:
...       print item [ item.find[""]+len[""] : ]
...
I need this stuff
I need this stuff too

Đã trả lời ngày 20 tháng 1 năm 2010 lúc 0:00Jan 20, 2010 at 0:00

ghostdog74ghostdog74ghostdog74

Phù bằng vàng 315K5555 gold badges253 silver badges341 bronze badges

1

Súp đẹp là một trình phân tích cú pháp HTML/XML tuyệt vời cho Python:

Súp đẹp là một trình phân tích cú pháp Python HTML/XML được thiết kế cho các dự án quay vòng nhanh như xẹp màn hình. Ba tính năng làm cho nó mạnh mẽ:

  1. Súp đẹp sẽ không bị nghẹt thở nếu bạn cho nó đánh dấu xấu. Nó mang lại một cây phân tích có ý nghĩa gần như tài liệu gốc của bạn. Điều này thường đủ tốt để thu thập dữ liệu bạn cần và chạy trốn.
  2. Súp đẹp cung cấp một vài phương pháp đơn giản và thành ngữ pythonic để điều hướng, tìm kiếm và sửa đổi một cây phân tích: một bộ công cụ để mổ xẻ một tài liệu và trích xuất những gì bạn cần. Bạn không phải tạo trình phân tích cú pháp tùy chỉnh cho mỗi ứng dụng.
  3. Súp đẹp tự động chuyển đổi các tài liệu đến thành unicode và các tài liệu đi thành UTF-8. Bạn không cần phải nghĩ về mã hóa, trừ khi tài liệu không chỉ định một món súp mã hóa và đẹp không thể tự động tự động. Sau đó, bạn chỉ cần chỉ định mã hóa gốc.

Đã trả lời ngày 19 tháng 1 năm 2010 lúc 23:10Jan 19, 2010 at 23:10

Andrew Hareandrew HareAndrew Hare

338K71 Huy hiệu vàng634 Huy hiệu bạc630 Huy hiệu Đồng71 gold badges634 silver badges630 bronze badges

Tôi khá thích phân tích cú pháp vào cây phần tử và sau đó sử dụng element.textelement.tail.

Nó cũng có xpath như tìm kiếmxpath like searching

>>> from xml.etree.ElementTree import ElementTree
>>> tree = ElementTree[]
>>> tree.parse["index.xhtml"]

>>> p = tree.find["body/p"]     # Finds first occurrence of tag p in body
>>> p

>>> p.text
"Some text in the Paragraph"
>>> links = p.getiterator["a"]  # Returns list of all links
>>> links
[, ]
>>> for i in links:             # Iterates through all found links
...     i.attrib["target"] = "blank"
>>> tree.write["output.xhtml"]

Đã trả lời ngày 19 tháng 1 năm 2010 lúc 23:11Jan 19, 2010 at 23:11

Aiden Bellaiden BellAiden Bell

Phù bằng vàng 28k372 Huy hiệu bạc117 Huy hiệu đồng3 gold badges72 silver badges117 bronze badges

Đây là cách tôi đang làm điều đó:

    [myhtml.split[''][1]].split[''][0]

Hãy cho tôi biết nếu nó hoạt động!

Đã trả lời ngày 16 tháng 8 năm 2017 lúc 9:45Aug 16, 2017 at 9:45

Shravya Kshravya kShravya K

371 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

0

Sử dụng XPath và LXML;

from lxml import etree

pageInMemory = open["pageToParse.html", "r"]

parsedPage = etree.HTML[pageInMemory]

yourListOfText = parsedPage.xpath["//tag//text[]"]

saveFile = open["savedFile", "w"]
saveFile.writelines[yourListOfText]

pageInMemory.close[]
saveFile.close[]

Nhanh hơn so với súp đẹp.

Nếu bạn muốn kiểm tra Xpath của bạn - Tôi thấy XPather của Firefox cực kỳ hữu ích.

Ghi chú thêm:

  • lxml-an-underappreciated-web-scraping-library
  • web-scraping-with-lxml

Đã trả lời ngày 20 tháng 1 năm 2010 lúc 6:15Jan 20, 2010 at 6:15

Torgertorgertorger

2.1983 Huy hiệu vàng27 Huy hiệu bạc35 Huy hiệu Đồng3 gold badges27 silver badges35 bronze badges

1

def value_tag[s]:
    i = s.index['>']
    s = s[i+1:]
    i = s.index['

Bài Viết Liên Quan

Chủ Đề