Использование Python + lxml (xpath) для очистки / извлечения текста с веб-сайта и его печати - PullRequest
0 голосов
/ 02 июня 2018

Я новый ученик Python;почти 3 недели.

Я пытаюсь автоматизировать некоторые ежедневные задачи с помощью python.Здесь я пытался очистить веб-сайт, который "https://www.germaneveryday.com/",. Он генерирует новое немецкое слово каждый день вместе с примером предложения. Поэтому я планировал автоматизировать это, а не посещать сайт каждый день.

Я следовал интерактивному учебнику отсюда: http://docs.python -guide.org / ru / latest / scenarios / scrape /

И это код:

from lxml import html
import requests

page = requests.get('https://www.germaneveryday.com/')
tree = html.fromstring(page.content)

Word = tree.xpath('//*[@id="main"]/div[1]/div[2]/div/h1/a')


print (Word)

Я проверил ежедневное слово на веб-сайте и, щелкнув правой кнопкой мыши, скопировал xpath, чтобы извлечь адрес «tree.xpath» для конкретных HTML-данных, которые я готов вывести, и распечатать в моем простом коде с использованием lxml.+ python.

За исключением того, что каждый раз, когда выводом является либо пустая скобка, такая как: [], либо это какой-то HTML-блок, который не имеет смысла. Как показано здесь: https://i.stack.imgur.com/dAjB6.png

Мой вопросто, что здесь не так, это адрес xpath или, возможно, у веб-сайта есть какой-то слой над html?

(извините за мое невежество, используя некоторые описания, такие как: layer или address of xpath)

My SИнформация о системе:

  • Windows 7 (x86)
  • Версия Python (v3.6.5)
  • Веб-браузер Chrome 66.0.3359.181

Ответы [ 3 ]

0 голосов
/ 02 июня 2018

Попробуйте этот код, он должен работать

from lxml import html
import requests

page = requests.get('http://www.germaneveryday.com/')
tree = html.fromstring(page.content)

word = tree.xpath('//*[@id="main"]/div[1]/div[2]/div/h1/a/text()')


print (word)
0 голосов
/ 02 июня 2018

Проблема была, как сказано выше: Ракешем, Давиде Фиокко и Девратной

"Использовать индекс списка для доступа к требуемому элементу и .text для печати его текста"

с использованием кода

from lxml import html
import requests

page = requests.get('https://www.germaneveryday.com/')
tree = html.fromstring(page.content)
Word = tree.xpath('//*[@id="main"]/div[1]/div[2]/div/h1/a')[0].text
print (Word)

Работает сейчас!

0 голосов
/ 02 июня 2018

Используйте индекс списка для доступа к требуемому элементу и .text для печати его текста.

Пример:

from lxml import html
import requests

page = requests.get('https://www.germaneveryday.com/')
tree = html.fromstring(page.content)
Word = tree.xpath('//*[@id="main"]/div[1]/div[2]/div/h1/a')[0].text
print (Word)

Вывод:

heimlich
...