使用 Python + lxml (xpath) 到网站的 scrape/extract 文本并打印

Using Python + lxml (xpath) to scrape/extract text from a website and print it

我是新 python 学习者;差不多 3 周大了。

我正在尝试使用 python 自动执行一些日常任务。在这里,我试图抓取一个名为“https://www.germaneveryday.com/”的网站,它每天都会生成一个新的德语单词以及一个句子示例。所以我的计划是自动执行此操作,而不是每天访问该站点。

我从这里开始学习在线教程:http://docs.python-guide.org/en/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 之上有某种层?

(请原谅我的无知,使用一些描述,例如:xpath 的层或地址)

我的系统信息:

使用列表索引访问所需元素并.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

试试这个代码,它应该可以工作

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)

问题如上所说:Rakesh、Davide Fiocco 和 Devratna

"Use list index to access the required element and .text to print its 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)

现在可以使用了!