python parse evernote共享笔记本

时间:2017-10-06 15:16:29

标签: python html selenium parsing xpath

我正在尝试从evernote获取数据'共享笔记本电脑'。 例如,从这一个:https://www.evernote.com/pub/missrspink/evernoteexamples#st=p&n=56b67555-158e-4d10-96e2-3b2c57ee372c

我尝试使用Beautiful Soup:

url = 'https://www.evernote.com/pub/missrspink/evernoteexamples#st=p&n=56b67555-158e-4d10-96e2-3b2c57ee372c'
r = requests.get(url)
bs = BeautifulSoup(r.text, 'html.parser')
bs

结果不包含笔记本中的任何文本信息,只包含一些代码。

我还看到了使用selenium并通过XPath查找元素的建议。 例如,我想找到这个笔记的头部 - '第3周第2周'。在谷歌浏览器中,我发现它的XPath是' / html / body / div [1] / div [1] / b / span / u / b'。 所以我试过这个:

driver = webdriver.PhantomJS()
driver.get(url)
t = driver.find_element_by_xpath('/html/body/div[1]/div[1]/b/span/u/b')

但它也没有用,结果是'NoSuchElementException:......'。

我是python中的新手,特别是解析,所以我很乐意接受任何帮助。 我使用的是python 3.6.2和jupiter-notebook。

提前致谢。

1 个答案:

答案 0 :(得分:0)

与Evernote交互的最简单方法是使用他们的official Python API

在您配置了API密钥并且通常可以连接之后,您可以下载并参考Notes和笔记本。

Evernote Notes使用自己的模板语言ENML(EverNote标记语言),它是HTML的一个子集。您将能够使用BeautifulSoup4来解析ENML并提取您正在寻找的元素。

如果您尝试针对本地安装(而不是他们的网络应用)提取信息,您也可以从可执行文件中获取所需内容。请参阅本地安装的how to pass arguments以提取数据。为此,您需要使用Python3 subprocess模块。

<强>无论其

如果您想使用selenium,这将帮助您入门:

async def check_for_pending_status(self, alert_id):
    alert_comments = await get_comments(alert_id)
    return next((comm.get('email') for comm in alert_comments 
                 if comm['status'] == COMMENT_STATUS.PENDING.value),
                None)