【发布时间】:2021-03-25 02:48:26
【问题描述】:
我是 Python 新手,我正在尽最大努力抓取一些 XML 数据。
到目前为止,我使用find 和get 方法让它适用于“正常”xPaths 和属性,但我正在努力解决最后一点。
这是 XML 的一个示例部分:
<root>
<job>
<othernodes>text</othernodes>
<advertiser>INPUT I WANT
<node2>text</node2>
<node3>text</node3>
</advertiser>
<othernodes>text</othernodes>
</job>
这是我脚本的一部分:
from bs4 import BeautifulSoup
import pandas as pd
import requests
url = "sample url"
xml_data = requests.get(url).content
soup = BeautifulSoup(xml_data, "xml")
#Find the tag/child
child = soup.find("job")
Company = []
while True:
try:
Company.append(" ".join(child.find('advertiser')))
except:
Company.append(" ")
try:
# Next sibling of child, here: job
child = child.find_next_sibling('job')
except:
break
data = []
data = pd.DataFrame({
"advertiser":Company,
})
如果我打印结果,它不会为节点广告商返回任何值。 我尝试解决此问题,但找不到解决方案。 谢谢!
【问题讨论】:
-
如果你使用 XPath 可能会更干净?
标签: python xml pandas beautifulsoup