elixir - 使用 Floki 访问 html 属性
问题描述
我正在尝试从我用Floki 抓取的 HTML 正文中获取图像。现在身体是
[
{"div", [{"class", "a-cover-image"}, {"data-state", "not-initialised"}],
[
{"div",
[
{"class", "content"},
{"data-image",
"/sites/default/files/legacy/khloe-kardashian-anxiety-pregnancy.png"},
{"data-text", "A photo of Khloe Kardashian dressed up for a night out"}
],
[
{"div",
[
{"class", "a-cover-image__cover a-cover-image__cover-loading-inner"},
{"style",
"background-image: url('/sites/default/files/legacy/khloe-kardashian-anxiety-pregnancy.png')"}
], []}
]},
{"div",
[
{"class", "a-cover-image__cover a-cover-image__cover-small"},
{"data-image",
"/sites/default/files/styles/1x1/public/legacy/khloe-kardashian-anxiety-pregnancy.png?itok=agZilCJ6"},
{"data-text", "A photo of Khloe Kardashian dressed up for a night out"},
{"data-height", ""},
{"data-width", ""}
], []},
{"div",
[
{"class", "a-cover-image__cover a-cover-image__cover-medium"},
{"data-image",
"/sites/default/files/styles/3x2/public/legacy/khloe-kardashian-anxiety-pregnancy.png?itok=tnPqQNhC"},
{"data-text", "A photo of Khloe Kardashian dressed up for a night out"},
{"data-height", ""},
{"data-width", ""}
], []},
{"div",
[
{"class", "a-cover-image__cover a-cover-image__cover-large"},
{"data-image",
"/sites/default/files/styles/16x9/public/legacy/khloe-kardashian-anxiety-pregnancy.png?itok=YgdCfuT2"},
{"data-text", "A photo of Khloe Kardashian dressed up for a night out"},
{"data-height", ""},
{"data-width", ""}
], []},
{"div",
[
{"class", "a-cover-image__cover a-cover-image__cover-xl"},
{"data-image",
"/sites/default/files/styles/16x9/public/legacy/khloe-kardashian-anxiety-pregnancy.png?itok=YgdCfuT2"},
{"data-text", "A photo of Khloe Kardashian dressed up for a night out"},
{"data-height", ""},
{"data-width", ""}
], []}
]}
]
所以我试图从中得到data-image
,a-cover-image__cover-small
我知道我可以像这样从身体中得到那个元素
body |> Floki.find(".a-cover-image__cover-small")
输出将是
[
{"div",
[
{"class", "a-cover-image__cover a-cover-image__cover-small"},
{"data-image",
"/sites/default/files/styles/1x1/public/legacy/khloe-kardashian-anxiety-pregnancy.png?itok=agZilCJ6"},
{"data-text", "A photo of Khloe Kardashian dressed up for a night out"},
{"data-height", ""},
{"data-width", ""}
], []}
]
我很难理解如何获得data-text
,我该如何退货?谢谢
解决方案
您可以使用Floki.attribute/2
:
body |> Floki.find(".a-cover-image__cover-small") |> Floki.attribute("data-text")
# => ["A photo of Khloe Kardashian dressed up for a night out"]
如果您知道只有一个匹配元素,您可以使用模式匹配提取它:
[text] = body |> Floki.find(".a-cover-image__cover-small") |> Floki.attribute("data-text")
text # => "A photo of Khloe Kardashian dressed up for a night out"
推荐阅读
- python - Selenium 找不到要单击的 div 元素
- google-chrome - 我的 chrome 控制台日志过滤器不工作/错误
- asp.net-core - ProducesResponseType 推理如何为 ActionResult 工作
? - scala - 猫的递归单子执行
- swift - SQLite.Swift - 查询现有 Db 表
- php - 如何正确管理facebook发送的头像
- sharepoint-2013 - 单击保存按钮后可能已删除不存在的项目
- typescript - 在打字稿中使用 e.target.value
- javascript - 如何将javascript脚本添加到百里香片段
- java - YARN:容器启动退出代码 127 的异常