2017-02-19 2 views
0

필자는 좀 더 지루한 작업을 돕기 위해 작은 스크립트를 파이썬으로 작성하려고합니다. 나는이 쓴 : 이것은 어떻게해야 무엇Beautiful Soup NoneType error

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". 그런 다음 그 부분에서 새로운 수프를 만들고 안에있는 모든 태그를 가져와야합니다. 지금은 어떤 퀘스트 ids를 선택하기를 원하는지 (그리고 어떻게 입력을 처리 할 것인가)를 알아 내기 전에, 나는 단지 하나의 퀘스트 ("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 객체는 특별한 이름 tag 객체 document


import requests, bs4 

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

아웃 :

'[document]' 
관련 문제