Получить xpath из файла html, используя L XML - Python - PullRequest
0 голосов
/ 31 марта 2020

Я учусь разбирать документы, используя l xml. Для этого я пытаюсь разобрать страницу с моим вопросом. В нем много информации, и я подумал, что это будет хорошая тренировка.

Достаточно контекста. Вот что я делаю:

  1. переход к URL: https://www.linkedin.com/in/NAME/
  2. открытие и сохранение исходного кода как "linkedin". html "
  3. , поскольку я пытаюсь извлечь свою текущую работу, я делаю следующее:
from io import StringIO, BytesIO
from lxml import html, etree

# read file
filename = 'linkedin.html'
file = open(filename).read()

# building parser
parser = etree.HTMLParser()
tree = etree.parse(StringIO(file), parser)

# parse an element
title = tree.xpath('/html/body/div[6]/div[4]/div[3]/div/div/div/div/div[2]/main/div[1]/section/div[2]/div[2]/div[1]/h2')
print(title)

Тип переменной дерева:

Но это всегда возвращаю пустой список для моей переменной title.

Я пытался весь день, но все еще не понимаю, что я делаю неправильно.

1 Ответ

0 голосов
/ 06 апреля 2020

Я нашел ответ на свою проблему, добавив параметр кодирования в функцию open ().

Вот что я сделал:

def parse_html_file(filename):
    f = open(filename, encoding="utf8").read()
    parser = etree.HTMLParser()
    tree = etree.parse(StringIO(f), parser)
    return tree


tree = parse_html_file('linkedin.html')
name = tree.xpath('//li[@class="inline t-24 t-black t-normal break-words"]')
print(name[0].text.strip())
...