首页 > 解决方案 > 使用 Python + lxml (xpath) 从网站抓取/提取文本并打印

问题描述

我是一个新的 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 以提取特定 html 数据的“tree.xpath”地址,我愿意使用 lxml + python 在我的简单代码中打印出来。

除了每次输出都是一个空括号,例如:[] 或者它是一些无意义的 html 块如下所示: https ://i.stack.imgur.com/dAjB6.png

我的问题是,这里有什么问题是 xpath 地址还是网站在 html 上有某种层?

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

我的系统信息:

标签: pythonxpathlxml

解决方案


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

推荐阅读