[英]Use BeautifulSoup to Iterate over XML to pull specific tags and store in variable
[英]Iterate through XML with BeautifulSoup and Pull Next Sibling
我已將 PDF 轉換為 XML 以便於解析。 我的 XML 示例如下:
<LTTextLineHorizontal bbox="[58.501, 729.764, 78.501, 737.764]" height="8.0" width="20.0" word_margin="0.1" x0="58.501" x1="78.501" y0="729.764" y1="737.764"><LTTextBoxHorizontal bbox="[58.501, 729.764, 78.501, 737.764]" height="8.0" index="13" width="20.0" x0="58.501" x1="78.501" y0="729.764" y1="737.764">Date: </LTTextBoxHorizontal></LTTextLineHorizontal>
<LTTextLineHorizontal bbox="[107.249, 730.004, 147.281, 738.004]" height="8.0" width="40.032" word_margin="0.1" x0="107.249" x1="147.281" y0="730.004" y1="738.004"><LTTextBoxHorizontal bbox="[107.249, 730.004, 147.281, 738.004]" height="8.0" index="14" width="40.032" x0="107.249" x1="147.281" y0="730.004" y1="738.004">02/26/2020 </LTTextBoxHorizontal></LTTextLineHorizontal>
“日期:”在一行上,下一個兄弟(我認為這就是它的名字)的值是“02/26/2020”。
我試過了:
from bs4 import BeautifulSoup
xml = open("test3.xml").read()
soup = BeautifulSoup(xml)
print(soup.find(text="Date:").findNext('LTTextLineHorizontal').contents[0])
我得到錯誤:
AttributeError: 'NoneType' object has no attribute 'findNext'
我的目標是遍歷 XML 並提取所需的變量(即日期),但將它們放入 dataframe 中。 但我什至還沒有走到那一步。
output 可以是字典或日期字符串:02/26/2020
使用正則表達式re
。
import re
from bs4 import BeautifulSoup
xml = open("test3.xml").read()
soup = BeautifulSoup(xml,'lxml')
print(soup.find('lttextboxhorizontal',text=re.compile("Date:")).find_next('lttextboxhorizontal').text)
或者
import re
from bs4 import BeautifulSoup
xml = open("test3.xml").read()
soup = BeautifulSoup(xml,'lxml')
print(soup.find(text=re.compile("Date:")).find_next('lttextboxhorizontal').text)
您可以在沒有正則表達式的情況下執行此操作,也可以放置一個空格。
from bs4 import BeautifulSoup
xml = open("test3.xml").read()
soup = BeautifulSoup(xml,'lxml')
print(soup.find(text="Date: ").find_next('lttextboxhorizontal').text)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.