очистка html с использованием запросов и lxml создает вместо текста, расположенного на этом узле

#python #html #xpath #python-requests #lxml

#python #HTML #xpath #python-запросы #lxml

Вопрос:

Я создаю программу на Python, используя lxml и запросы для очистки текста с веб-сайта. Однако, когда я перехожу к нужному узлу, мой код выдает метку элемента вместо текста, расположенного на этом узле.

 # import packages
from lxml import html
import requests

# initialize program with URL
ficUrl = 'https://www.fanfiction.net/s/10847788/'

# pull metadata
page = requests.get(ficUrl)
tree = html.fromstring(page.content)
title = tree.xpath('//*[@id="profile_top"]/b')
print(title)
  

Когда я просматриваю страницу, на этом узле должен быть расположен текст «Goldstein». Однако моя программа печатает [<Element b at 0x11171e548>] . Что я могу сделать, чтобы это исправить?

Комментарии:

1. title[0].text ???

Ответ №1:

Понял это!

Мне нужно было добавить /text() тег в конец xpath .

Ответ №2:

Вы могли бы использовать beautifulsoup

 from bs4 import BeautifulSoup as bs
import requests

r = requests.get('https://www.fanfiction.net/s/10847788/')
soup = bs(r.content, 'lxml')
data = soup.select_one('#profile_top .xcontrast_txt').text
print(data)