Почему я не получаю никаких данных с сайта? - PullRequest
0 голосов
/ 26 февраля 2019

Так что я новенький, весь в интернете.Я работал над проектом, который требует, чтобы я получил слово дня от здесь .Я успешно схватил слово, теперь мне просто нужно получить определение, но когда я это сделаю, я получу следующий результат:

Avuncular (правильное слово дня)

Определение:

[]

вот мой код:

from lxml import html
import requests

page = requests.get('https://www.merriam-webster.com/word-of-the-day')
tree = html.fromstring(page.content)

word = tree.xpath('/html/body/div[1]/div/div[4]/main/article/div[1]/div[2]/div[1]/div/h1/text()')

WOTD = str(word)
WOTD = WOTD[2:]
WOTD = WOTD[:-2]

print(WOTD.capitalize())


print("Definition:")

wordDef = tree.xpath('/html/body/div[1]/div/div[4]/main/article/div[2]/div[1]/div/div[1]/p[1]/text()')

print(wordDef)

[] должен быть первым определением, но по какой-то причине не будет работать.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Если вы хотите избежать жесткого кодирования индекса в xpath, альтернативой вашей текущей попытке будет следующее:

import requests
from lxml.html import fromstring

page = requests.get('https://www.merriam-webster.com/word-of-the-day')
tree = fromstring(page.text)
word = tree.xpath("//*[@class='word-header']//h1")[0].text
wordDef = tree.xpath("//h2[contains(.,'Definition')]/following-sibling::p/strong")[0].tail.strip()
print(f'{word}\n{wordDef}')

Если wordDef не удается получить полную порцию, попробуйте заменить на приведенный нижеодин:

wordDef = tree.xpath("//h2[contains(.,'Definition')]/following-sibling::p")[0].text_content()

Выход:

avuncular
suggestive of an uncle especially in kindliness or geniality
0 голосов
/ 26 февраля 2019

Ваш xpath слегка отключен.Вот правильный вариант:

wordDef = tree.xpath('/html/body/div[1]/div/div[4]/main/article/div[3]/div[1]/div/div[1]/p[1]/text()')

Обратите внимание на div [3] после main / article вместо div [2].Теперь при запуске вы должны получить:

Avuncular
Definition:
[' suggestive of an uncle especially in kindliness or geniality']
...