2013-11-09 3 views
0

Я пытался получить информацию с сайта и недавно обнаружил, что хранится в childNodes [0] .data. Я довольно новичок в python и никогда не пробовал писать сценарии на сайтах.Python - получение информации от узлов

Кто-то сказал мне, что я могу сделать tmp.xml-файл и извлечь информацию оттуда, но поскольку он только получает исходный код (который, как мне кажется, бесполезен для меня), я не получаю никаких результатов ,

Текущий код:

response = urllib2.urlopen(get_link) 
html = response.read() 
with open("tmp.xml", "w") as f: 
    f.write(html) 
dom = parse("tmp.xml") 
name = dom.getElementsByTagName("name[0].firstChild.nodeValue") 

Я также попытался с помощью 'Dóm = разобрана (HTML)' без лучшего результата.

ответ

0

getElementsByTagName() принимает имя элемента, а не выражение. Очень маловероятно, что на загружаемой странице есть теги, которые содержат <name[0].firstChild.nodeValue> тегов.

Если вы загружаете HTML-код, используйте вместо него парсер HTML, например BeautifulSoup. Для XML использование ElementTree API намного проще, чем использование (архаичного и очень многословного) DOM API.

Ни один из подходов не требует, чтобы вы сначала сохранили источник на диске, оба API могут анализировать непосредственно из объекта ответа, возвращаемого urllib2.

# HTML 
import urllib2 
from bs4 import BeautifulSoup 

response = urllib2.urlopen(get_link) 
soup = BeautifulSoup(response.read(), from_encoding=response.headers.getparam('charset')) 

print soup.find('title').text 

или

# XML 
import urllib2 
from xml.etree import ElementTree as ET 

response = urllib2.urlopen(get_link) 
tree = ET.parse(response) 

print tree.find('elementname').text 
Смежные вопросы