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

时间:2018-06-02 14:03:47

标签: python xpath lxml

我是一名新的蟒蛇学习者;差不多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的图层或地址)

我的系统信息:

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试试这段代码,它应该可以正常工作

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)

答案 2 :(得分:0)

问题如上所述:Rakesh,Davide Fiocco和Devratna

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

现在正在运作!