2014-09-25 3 views
1

У меня есть простой скрипт, питона, как:Извлечение значения тега с помощью XPath в Python

#!/usr/bin/python 
import requests 
from lxml import html 
response = requests.get('http://site.ir/') 
out=response.content 
tree = html.fromstring(open(out).read()) 
print [e.text_content() for e in tree.xpath('//div[class="group"]/div[class="groupinfo"]/a/text()')] 

я использовал XPath для того, чтобы получить значение тега a, как вы можете видеть на изображении ниже ... enter image description here Но выходной образец не то, что я ожидал.

UPDATE Я также следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "p.py", line 7, in <module> 
    tree = html.fromstring(open(out).read()) 
IOError: [Errno 36] File name too long: '\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" .... 

ответ

2

Вам нужно положить @ в начале имени атрибута, чтобы обратиться атрибут в XPath:

//div[@class="group"]/div[@class="groupinfo"]/a/text() 
+0

Спасибо ... но У меня есть ошибка .. см. Обновление – MLSC

+0

Перед тем, как ответить и даже нет, у меня есть эта ошибка ... Спасибо ... – MLSC

+0

Я не эксперт по python, но, похоже, вы обрабатываете содержимое HTML как имя файла. Попробуйте передать HTML напрямую: 'tree = html.fromstring (out)' – har07