【问题标题】:Using Python + lxml (xpath) to scrape/extract text from a website and print it使用 Python + lxml (xpath) 从网站抓取/提取文本并打印
【发布时间】:2018-11-12 10:31:59
【问题描述】:

我是一名 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的层或地址)

我的系统信息:

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

【问题讨论】:

    标签: python xpath lxml


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      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)
      

      【讨论】:

        【解决方案3】:

        问题如上所述: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)
        

        它正在工作!

        【讨论】:

          猜你喜欢
          • 2017-01-05
          • 2018-01-02
          • 2014-11-24
          • 1970-01-01
          • 1970-01-01
          • 2021-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多