XML: вернуть текстовое значение? - PullRequest
0 голосов
/ 09 сентября 2018

Я использую XML для возврата текстовых значений для значений ниже. Я использую абсолютный путь для сопоставления с местоположением текстового значения. Я уверен, что путь точен. Однако, когда я пытаюсь вернуть значение, я не возвращаю значение. Кто-нибудь видит ошибки в коде, которые могут помешать значению вернуть текстовое значение?

import requests
from lxml import html


headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
url = 'https://www.marketwatch.com'

response = requests.get(url, headers=headers, verify=False).text

parser = html.fromstring(response)


r_name = parser.xpath('/html/body/div[2]/div/div[1]/div/div/ul[2]/li[1]/div[3]/div/p/text()')
print(r_name)

1 Ответ

0 голосов
/ 09 сентября 2018

Ваш XPath выглядит правильно для меня, учитывая содержание на этой веб-странице. Однако парсер XPath lxml часто глючит при идентификации элементов с индексом. Вместо этого вы можете искать по атрибуту:

r_name = parser.xpath('//p[@class="article__summary"]/text()')
...