2017-02-19 10 views
0

私は、私の仕事のより退屈な部分を手伝うために小さなスクリプトを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を選択したいのか(そしてどのように入力を処理するのか)を知る前に、私はただ1つ(「1478」)をハードコードしました。

これまでのところ、スクリプトはクエストを印刷しますが、そこから新しいスープを作成することはできません。

クエスト変数が文字列ではない可能性はありますか?または私は何か間違っているのですか?両方が航行文字列であるよう

答えて

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) 

tagオブジェクトから新しいsoupオブジェクトを構築する必要はありません、あなたは、それらの両方にfind_allを使用することができますので、彼らは同じように動作し、同じ方法でアクセスすることができます。私の意見で

soupオブジェクトがdocumentアウト


import requests, bs4 

r =requests.get('http://www.google.com') 
soup = bs4.BeautifulSoup(r.text, 'lxml') 
soup.name 

命名された特別なtagオブジェクトです:

'[document]'