Python 在Enlive中解析HTML,就像在Beautifulsoup中一样
我正在尝试用Enlive从Clojure中的HTML获取链接。我可以从一个页面中获取所有链接的列表吗?我可以重复一下吗 从bs4导入BeautifulSoup soup=BeautifulSouphtml\u doc,'html.parser' 粉饰 睡鼠的故事Python 在Enlive中解析HTML,就像在Beautifulsoup中一样,python,clojure,enlive,Python,Clojure,Enlive,我正在尝试用Enlive从Clojure中的HTML获取链接。我可以从一个页面中获取所有链接的列表吗?我可以重复一下吗 从bs4导入BeautifulSoup soup=BeautifulSouphtml\u doc,'html.parser' 粉饰 睡鼠的故事 睡鼠的故事 从前有三个小姐妹;他们的名字是 , 和 ; 他们住在井底。 ... 链接=汤。查找所有“a” 或 链接=汤'a' 我如何在Clojure和Enlive中做到这一点?这将非常简单: 需要“[net.cgrand.e
睡鼠的故事
从前有三个小姐妹;他们的名字是 , 和 ; 他们住在井底。
...
链接=汤。查找所有“a” 或 链接=汤'a'我如何在Clojure和Enlive中做到这一点?这将非常简单: 需要“[net.cgrand.enlive-html:作为enlive] 让[data enlive/html资源java.net.URL。https://www.stackoverflow.com 所有参照激活/选择数据[:a]] 首先是所有裁判 ;;=> {:tag:a,:attrs{:hrefhttps://stackoverflow.com,:class-logo js gps track,:data gps track top\u nav。单击{is_current:true,location:1,destination:8}},:content\n{:标记:span,:attrs{:class-img},:content Stack Overflow}\n} “所有引用”集合将包含来自enlive表示形式页面的所有链接 让[data enlive/html资源java.net.URL。https://www.stackoverflow.com 所有参照激活/选择数据[:a]] 地图->%:属性:href所有参考
例如,将从非常简单的链接中收集所有href值: 需要“[net.cgrand.enlive-html:作为enlive] 让[data enlive/html资源java.net.URL。https://www.stackoverflow.com 所有参照激活/选择数据[:a]] 首先是所有裁判 ;;=> {:tag:a,:attrs{:hrefhttps://stackoverflow.com,:class-logo js gps track,:data gps track top\u nav。单击{is_current:true,location:1,destination:8}},:content\n{:标记:span,:attrs{:class-img},:content Stack Overflow}\n} “所有引用”集合将包含来自enlive表示形式页面的所有链接 让[data enlive/html资源java.net.URL。https://www.stackoverflow.com 所有参照激活/选择数据[:a]] 地图->%:属性:href所有参考
例如,如果您需要使用Enlive的HTML资源功能摄取一些HTML,那么您首先需要从链接中收集所有href值。我们将抓取news.google.com:
(defn fetch-url [url]
(html/html-resource (java.net.URL. url)))
(def goog-news (fetch-url "https://news.google.com"))
要获取所有标记,请使用带有简单选择器的select函数(第二个参数):
(html/select goog-news [:a])
这将计算为一系列映射,每个标记一个。以下是今天新闻中的标签图示例:
{:tag :a,
:attrs {:class "nuEeue hzdq5d ME7ew",
:target "_blank",
:href "https://www.vanityfair.com/hollywood/2018/01/first-black-panther-reviews",
:jsname "NV4Anc"},
:content ("The First Black Panther Reviews Are Here—and They're Ecstatic")}
要获取每个的内部文本,您可以将Enlive的文本函数映射到结果上,例如映射html/text*1。要获取每个href,您可以映射comp:href:attrs*1。首先,您需要使用Enlive的HTML资源功能摄取一些HTML。我们将抓取news.google.com:
(defn fetch-url [url]
(html/html-resource (java.net.URL. url)))
(def goog-news (fetch-url "https://news.google.com"))
要获取所有标记,请使用带有简单选择器的select函数(第二个参数):
(html/select goog-news [:a])
这将计算为一系列映射,每个标记一个。以下是今天新闻中的标签图示例:
{:tag :a,
:attrs {:class "nuEeue hzdq5d ME7ew",
:target "_blank",
:href "https://www.vanityfair.com/hollywood/2018/01/first-black-panther-reviews",
:jsname "NV4Anc"},
:content ("The First Black Panther Reviews Are Here—and They're Ecstatic")}
要获取每个的内部文本,您可以将Enlive的文本函数映射到结果上,例如映射html/text*1。要获取每个href,您可以映射comp:href:attrs*1。查看enlive/select和[:a]查看enlive/select和[:a]