【问题标题】:Using python selenium to scrape time data使用 python selenium 抓取时间数据
【发布时间】:2017-09-30 13:46:17
【问题描述】:

我正在使用以下代码行来获取元素的 utime。从输出中我可以看到我的目标是正确的区域并且 utime 属性存在于那里,但我仍然收到None 的输出。我已经尝试多次重写data-utime 属性,以确保它的格式正确适用于该函数。我在这里错过了什么?

代码:

   timeStampBox = post.find_element_by_css_selector('.fsm.fwn.fcg')
   timeStampBox = timeStampBox.find_element_by_class_name('_5pcq')

   print(timeStampBox.get_attribute('innerHTML'))
   print(timeStampBox.get_attribute('data-utime'))

输出:

<abbr title="Monday, September 4, 2017 at 6:11am" data-utime="1504530675" data-shorten="1" class="_5ptz"><span class="timestampContent" id="js_15">September 4 at 6:11am</span></abbr>
None

【问题讨论】:

  • 您的代码引用了一堆您尚未发布的 HTML。

标签: python google-chrome selenium


【解决方案1】:

abbr 元素是timeStampBoxinnerHTML data-utime 不是timeStampBox 的属性。

我是这样模仿你的情况的:

<html>
<body>
<div><abbr title="Monday, September 4, 2017 at 6:11am" data-utime="1504530675" data-shorten="1" class="_5ptz"><span class="timestampContent" id="js_15">September 4 at 6:11am</span></abbr></div>
</body>
</html>

div 元素是abbr 元素的容器。我可以假装它是你的timeStampBox 元素。

>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> driver.get('file://c:/scratch/temp.htm')

识别timeStampBox 并获取它的innerHTML。和以前一样,我得到了abbr 元素。

>>> timeStampBox = driver.find_element_by_tag_name('div')
>>> timeStampBox.get_attribute('innerHTML')
'<abbr title="Monday, September 4, 2017 at 6:11am" data-utime="1504530675" data-shorten="1" class="_5ptz"><span class="timestampContent" id="js_15">September 4 at 6:11am</span></abbr>'

data-utimeNone,因为timeStampBox 中不存在此属性。

>>> timeStampBox.get_attribute('data-utime')

但它在abbr 中。

>>> abbr = driver.find_element_by_tag_name('abbr')
>>> abbr.get_attribute('data-utime')
'1504530675'

我们故事的寓意:直接搜索abbr

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多