python - 使用 Python + lxml (xpath) 从网站抓取/提取文本并打印

标签 python xpath lxml

我是一个新的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 block ,如下所示: /image/dAjB6.png

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

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

我的系统信息:

  • Windows 7 (x86)
  • Python 版本为 (v3.6.5)
  • 网络浏览器是 Chrome 66.0.3359.181

最佳答案

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

关于python - 使用 Python + lxml (xpath) 从网站抓取/提取文本并打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50657708/

相关文章:

python - 如何在 Pymacs 中加载 GTK 程序

python - 修改Python脚本批量转换目录下所有 "WOFF"文件

python - 停止索引太多

java - xpath表达式查找html文件中所有出现的元素

regex - scrapy/xpaths/正则表达式 : proper xpath/re to ignore "link interjections"

python - 使用 lxml 生成 XHTML 文档的推荐方法

python - 无法安装 lxml(python 2.6.3、osx 10.6 雪豹)

Python 的闭包——赋值前引用的局部变量

javascript - 如何使用 Html Agility Pack 的实际源代码获取 javascript 代码

python - 使用 lxml 一次对一个 .xml 项(及其子项)执行函数操作