【发布时间】:2021-02-12 09:42:09
【问题描述】:
在编程方面相对较新,使用 Selenium 和 Xpath 编写 Python
来自这个网站:https://www.marketbeat.com/stocks/NASDAQ/AMZN/earnings/
我想做的是复制过去收入的日期。
问题是它在表格中并且它也有标签。
我有这个完整的 Xpath:
/html/body/div[1]/main/article/form/div[8]/div[2]/div[2]/div/div[5]/div/table/tbody/tr[2 ]/td[1]
经过检查,它显示了这一点
< td data-sort-value="20201027000000">10/27/2020 < / td >
我正在尝试从这里获取10/27/2020,但我不知道该怎么做。
当它只是 < td >$1.53< /td > 时很容易,只需提供完整的 xpath,然后在其上执行 .text 即可得到文本。
重点是我如何获得10/27/2020。我怀疑我将不得不检查 data-sort-value="" 部分。
这是我所拥有的:
stringeEPSxpath = """/html/body/div[1]/main/article/form/div[8]/div[2]/div[2]/div/div[5]/div/table/tbody/tr[""" + row + """]/td[1]"""
Date = stringeEPSxpath.text
(行部分只是我通过循环迭代网站页面没有问题。)
对于我的其余代码,它非常简单:
stringeEPSxpath = """/html/body/div[1]/main/article/form/div[8]/div[2]/div[2]/div/div[5]/div/table/tbody/tr[""" + row + """]/td[3]"""
stringEPSxpath = """/html/body/div[1]/main/article/form/div[8]/div[2]/div[2]/div/div[5]/div/table/tbody/tr[""" + row + """]/td[4]"""
elem = driver.find_element_by_xpath(stringeEPSxpath)
elem2 = driver.find_element_by_xpath(stringEPSxpath)
fix1 = (elem.text).replace(')','')
fix2 = (elem2.text).replace(')','')
eps1 = fix1.replace('(','-')
eps2 = fix2.replace('(','-')
正如您在上面看到的,我所要做的就是为其设置一个变量,然后使用 .text 将其转换为字符串。但现在这不适用于日期。
最终结果是AttributeError: 'str' object has no attribute 'text' 的错误,我怀疑这是因为data-sort-value="20201027000000" 部分。
【问题讨论】:
-
您可以编辑您的问题并发布网址吗?
-
marketbeat.com/stocks/NASDAQ/PYPL/earnings 不是同一个股票(另一个是 AMZN),但格式完全相同
-
等等,没关系,我找到了原因,我忘了写一行代码让它真正工作。感谢您的回复,它让我再次解决了这个问题。