Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Enlive中解析HTML,就像在Beautifulsoup中一样_Python_Clojure_Enlive - Fatal编程技术网

Python 在Enlive中解析HTML,就像在Beautifulsoup中一样

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

我正在尝试用Enlive从Clojure中的HTML获取链接。我可以从一个页面中获取所有链接的列表吗?我可以重复一下吗

从bs4导入BeautifulSoup soup=BeautifulSouphtml\u doc,'html.parser' 粉饰 睡鼠的故事

睡鼠的故事

从前有三个小姐妹;他们的名字是 , 和 ; 他们住在井底。

...

链接=汤。查找所有“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]