我正在尝试用Python编写一个小脚本来帮助我完成一些比较繁琐的工作。我写了这个:
from bs4 import BeautifulSoup
import lxml
import os
import sys
questid = "1478"
soup = BeautifulSoup(open("Data/xmls/quests.xml"), "lxml")
for quest in soup.find_all('quest', {"id":questid}):
print(quest)
questSoup = BeautifulSoup(quest)
for floor in questSoup.find_all('location_id'):
print(floor)
这应该做的是获取一个名为“任务”的巨大xml的一部分,基于标签 - 及其属性 - “id”。然后它应该从该部分制作一个新的汤,并从中获取所有标签。现在,在我弄清楚我想要选择哪个任务ID之前(以及我将如何处理输入),我只是硬编码了一个(“1478”)。
到目前为止,脚本打印了任务,但无法从中创建新的汤。
任务变量是否可能不是字符串?或者我做错了什么?
答案 0 :(得分:0)
for quest in soup.find_all('quest', {"id":questid}):
print(quest)
# questSoup = BeautifulSoup(quest)
for floor in quest.find_all('location_id'):
print(floor)
无需从soup
对象构建新的tag
对象,您可以对它们使用find_all
,因为它们都是可导航的字符串,因此它们的行为方式相同,可以用同样的方式访问。
在我看来,soup
对象是特殊的tag
对象,名为document
import requests, bs4
r =requests.get('http://www.google.com')
soup = bs4.BeautifulSoup(r.text, 'lxml')
soup.name
出:
'[document]'