2015-07-21 14 views
7

Sto provando a raschiare un file xml con BeautifulSoup 4.4.0 che ha nomi di tag in camelCase e find_all non sembra in grado di trovarli. Esempio di codice:find_all con nomi di tag camelCase con BeautifulSoup 4

from bs4 import BeautifulSoup 

xml = """ 
<hello> 
    world 
</hello> 
""" 
soup = BeautifulSoup(xml, "lxml") 

for x in soup.find_all("hello"): 
    print x 

xml2 = """ 
<helloWorld> 
    :-) 
</helloWorld> 
""" 
soup = BeautifulSoup(xml2, "lxml") 

for x in soup.find_all("helloWorld"): 
    print x 

L'output che ottengo è:

$ python soup_test.py 
<hello> 
    world 
</hello> 

Qual è il modo corretto per cercare di cammello nomi dei tag con carter/in maiuscolo?

risposta

6

Per qualsiasi analisi sensibile al maiuscolo/minuscolo con BeautifulSoup, si desidera analizzare la modalità "xml". La modalità predefinita (parsing HTML) non si preoccupa del caso, dal momento che HTML non si preoccupa del caso. Nel tuo caso, invece di utilizzare la modalità "lxml", passa a "xml":

from bs4 import BeautifulSoup 

xml2 = """ 
<helloWorld> 
    :-) 
</helloWorld> 
""" 
soup = BeautifulSoup(xml2, "xml") 

for x in soup.find_all("helloWorld"): 
    print x 
Problemi correlati