【问题标题】:Scraping data from a webpage using xpath in python, selenium在 python、selenium 中使用 xpath 从网页中抓取数据
【发布时间】:2020-11-02 00:31:03
【问题描述】:

我是编码新手,因此对于任何新手错误,我深表歉意。

我希望使用 python 和 selenium 从网页中抓取数据。我认为我已经确定了要提取的数据的 xpath,但是当我提取它时,它返回“None”而不是返回数据。

我正在尝试从以下 html 中提取“2001 年 10 月 - 2002 年 1 月”:

<h4 class="pv-entity__date-range t-14 t-black--light t-normal">
      <span class="visually-hidden">Dates Employed</span>
      <span>Oct 2001 – Jan 2002</span>
    </h4>

为此,我运行了以下代码:

sel = Selector(text=driver.page_source)
prev = sel.xpath('.//span[@class = "pv-entity__date-range.t-14.t-black--light.t-normal"][1]').extract_first()
print(prev)

哪些输出:

None

如何从这段 html 中识别“2001 年 10 月 - 2002 年 1 月”?

提前感谢您的帮助!

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    要打印 span[2] 值,您可以这样做。

    elem=driver.find_element_by_css_selector("h4.pv-entity__date-range.t-14.t-black--light.t-normal>span:nth-child(2)")
    print(elem.text)
    

    【讨论】:

      【解决方案2】:

      试试:

      sel = Selector(text=driver.page_source)
      prev = sel.xpath('.//span[contains(.,"Dates Employed")]/following-sibling::span').extract_first()
      print(prev)
      

      编辑:要获取文本,您可以:

      prev = sel.xpath('.//span[contains(.,"Dates Employed")]/following-sibling::span/text()').get()
      
      print(prev)
      

      【讨论】:

      • 成功了!它返回“Oct 2001 - Jan 2002”,我怎样才能剥离 以便它只是数据?非常感谢您的帮助!
      • 不幸的是,这不起作用-返回此错误“AttributeError:'str'对象没有属性'text'”-除非您尝试从字符串中分割前6个字符和后7个字符有个更好的主意。再次感谢您
      • 切片工作 - 它不稳定,可能有更有效的解决方案,但这对我有用。谢谢!
      猜你喜欢
      • 2019-02-19
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 2021-07-23
      相关资源
      最近更新 更多