Python / xml newb在这里玩Python和BeautifulSoup试图学习如何解析XML,特别是弄乱Oodle.com API来列出汽车分类。我在简单的XML和BS方面取得了成功,但在使用它时,无论我尝试什么,我似乎无法获得我想要的数据。我尝试阅读汤文档几个小时,但无法弄清楚。 XML的结构如下:
<?xml version="1.0" encoding="utf-8"?>
<oodle_response stat="ok">
<current>
....
</current>
<listings>
<element>
<id>8453458345</id>
<title>2009 Toyota Avalon XL Sedan 4D</title>
<body>...</body>
<url>...</url>
<images>
<element>...</element>
<element>...</element>
</images>
<attributes>
<features>...</features>
<mileage>32637</mileage>
<price>19999</price>
<trim>XL</trim>
<vin>9234234234234234</vin>
<year>2009</year>
</attributes>
</element>
<element>.. Next car here ..</element>
<element>..Aaaand next one here ..</element>
</listings>
<meta>...</meta>
</oodle_response>
我首先使用urllib发出请求以获取Feed并保存到本地文件。然后:
xml = open("temp.xml", "r")
from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(xml)
然后我不确定是什么。我已经尝试了很多东西,但是所有东西似乎都比我想要的还要垃圾,这使得难以找到问题。我正在尝试获取id,头衔,里程,价格,年份,vin。那么我如何获得这些并通过循环加快进程?理想情况下,我想要一个for循环,如:
for soup.listings.element in soup.listings:
id = soup.listings.element.id
...
我知道这显然不起作用,但可以获取列表的信息,并将其存储到列表中,然后转到下一个广告。感谢帮助人员
答案 0 :(得分:0)
你可以这样做:
for element in soup('element'):
id = element.id.text
mileage = element.attributes.mileage.text
price = element.attributes.price.text
year = element.attributes.year.text
vin = element.attributes.vin.text