Jestem nowym ucznia Pythona; prawie 3 tygodnie.

Próbuję zautomatyzować kilka codziennych zadań, używając Pythona. Tutaj próbowałem zeskrobić stronę internetową, która jest "https://www.germaneverydayda.com/ "Codziennie generuje nowe niemieckie słowo wraz z przykładem zdania. Więc mój plan miał na celu zautomatyzowanie tego zamiast codziennego odwiedzania witryny.

Podążałem za samouczkiem online stąd: http: //docs.PYTHON-GIDE .org / pl / najnowsze / scenariusze / zeskrobanie /

A to jest kod:

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)

Sprawdziłem codzienne słowo na stronie internetowej i używam kliknięcia Kliknij prawym przyciskiem myszy, skopiuj XPath, aby wyodrębnić adres "Tree.xpath" dla konkretnych danych HTML, jestem gotów wyjść i drukować w moim prostym kodzie za pomocą LXML + Python.

Tyle że za każdym razem, gdy wyjście jest albo pustym nawiasem, takim jak: [] lub jest jakiś blok HTML bez znaczenia, jak pokazano tutaj: https://i.stack.imgur.com/Dajb6.png

Moje pytanie brzmi: co jest nie tak, to jest adres XPath lub może strona internetowa ma jakiś warstwę nad HTML?

(Przepraszam za ignorancję za pomocą takich opisów, jak: warstwa lub adres XPath)

Moje informacje o systemie:

  • Windows 7 (x86)
  • Wersja Pythona jest (v3.6.5)
  • Przeglądarka internetowa jest Chrome 66.0.3359.181
1
MN93 2 czerwiec 2018, 17:03

3 odpowiedzi

Najlepsza odpowiedź

Użyj indeksu listy, aby uzyskać dostęp do wymaganego elementu i {x0}}, aby wydrukować swój tekst.

Np .:

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)

Wynik:

heimlich
1
Davide Fiocco 2 czerwiec 2018, 14:21

Problem był taki, jak powiedział: Rakesh, Davide Fiocco i Devratna

"Użyj indeksu listy, aby uzyskać dostęp do wymaganego elementu i .Text, aby wydrukować swój tekst"

Korzystanie z kodu.

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)

Już działa !

0
MN93 2 czerwiec 2018, 15:22

Wypróbuj ten kod, powinien działać

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
Devratna 2 czerwiec 2018, 14:58