使用 OpenRefine / GoogleRefine 进行抓取会忽略 <div class="itemfooter"> 标签
Scraping using OpenRefine / GoogleRefine omits <div class="itemfooter"> tags
我想抓取一组简单的页面,我想我会使用 OpenRefine 抓取每个页面的 HTML,然后解析它。我在寻找特定标签的内容,但奇怪的是,OpenRefine 没有显示该特定标签。这是 OR 第一次省略标签,我不确定为什么。以下是具体细节:
我正在抓取分配给以下博客中每个博客 post 的类别:
http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p00-0.html
页面 URL 的范围从 p00-0.html 到 p330-0.html。
所以我得到了一列页面,从 0 到 330,我将其与 URL 结合起来,因此:
"http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p" + 值 + "-0.html"
当我抓取每个页面的 HTML 内容时,我希望看到如下内容(这是第一个条目的预期结果):
<h3>Les prédictions du mage Houellebecq - Charlie Hebdo N°1177 - 7 janvier 2015</h3>
<div class="itemfooter"> Thèmes >> <a href="http://stripsjournal.canalblog.com/tag/2022"
rel="tag">2022</a>,
<a href="http://stripsjournal.canalblog.com/tag/Houellebecq" rel="tag">Houellebecq</a>,
<a href="http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo" rel="tag">Les
Unes de Charlie Hebdo</a>,
<a href="http://stripsjournal.canalblog.com/tag/livres" rel="tag">livres</a>,
<a href="http://stripsjournal.canalblog.com/tag/ramadan" rel="tag">ramadan</a>,
<a href="http://stripsjournal.canalblog.com/tag/religion" rel="tag">religion</a>,
<a href="http://stripsjournal.canalblog.com/tag/%C3%A9lections" rel="tag">élections</a>
</div>
<p><p style="text-align: center;"><a name="IMG_101392446"
href="http://p2.storage.canalblog.com/24/72/177230/101392446_o.jpg" target="_blank"><img
src="http://p2.storage.canalblog.com/24/72/177230/101392446.jpg" border="0" alt="01-1177-
Houellebecq" width="355" /></a></p>
相反,OR 完全省略了标记并产生以下输出:
<h3>Les prédictions du mage Houellebecq - Charlie Hebdo N°1177 - 7 janvier 2015</h3>
<p><p style="text-align: center;"><a name="IMG_101392446"
href="http://p2.storage.canalblog.com/24/72/177230/101392446_o.jpg" target="_blank"><img
src="http://p2.storage.canalblog.com/24/72/177230/101392446.jpg" border="0" alt="01-1177-
Houellebecq" width="355" /></a></p>
我是不是犯了一些可笑的心不在焉的错误,还是有什么问题?
OpenRefine 没有遗漏任何内容,网站根据它认为的客户端发送不同的 HTML。如果你看看你收到的HTML,如果它和我收到的一样,你会发现它是针对该站点的移动版本,而不是桌面版本。
不清楚他们使用什么作为触发发送移动版本的信号(而且 OpenRefine 没有提供对 HTML header 字段的很好控制),所以你可能无法轻松解决它,但 OpenRefine 不会丢弃它收到的任何东西。
此时,正确的用户代理字符串或浏览器 ID 可能会派上用场。伪造一个发送请求的真实浏览器,而不是我们默认的 "OpenRefine/2.6".
用户代理字符串
如果使用开发版或者修改一下:
如果你想调整或设置用户代理又名浏览器 ID,那么你可以在底部这样做:https://github.com/OpenRefine/OpenRefine/blob/master/main/src/com/google/refine/RefineServlet.java
然后构建。
如果使用标准版:
为简单起见,您可以导航到 http://localhost:3333/preferences
并设置名为 "User-Agent" 的 属性 等于您想要的值,例如 "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
我想抓取一组简单的页面,我想我会使用 OpenRefine 抓取每个页面的 HTML,然后解析它。我在寻找特定标签的内容,但奇怪的是,OpenRefine 没有显示该特定标签。这是 OR 第一次省略标签,我不确定为什么。以下是具体细节:
我正在抓取分配给以下博客中每个博客 post 的类别:
http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p00-0.html
页面 URL 的范围从 p00-0.html 到 p330-0.html。
所以我得到了一列页面,从 0 到 330,我将其与 URL 结合起来,因此:
"http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p" + 值 + "-0.html"
当我抓取每个页面的 HTML 内容时,我希望看到如下内容(这是第一个条目的预期结果):
<h3>Les prédictions du mage Houellebecq - Charlie Hebdo N°1177 - 7 janvier 2015</h3>
<div class="itemfooter"> Thèmes >> <a href="http://stripsjournal.canalblog.com/tag/2022"
rel="tag">2022</a>,
<a href="http://stripsjournal.canalblog.com/tag/Houellebecq" rel="tag">Houellebecq</a>,
<a href="http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo" rel="tag">Les
Unes de Charlie Hebdo</a>,
<a href="http://stripsjournal.canalblog.com/tag/livres" rel="tag">livres</a>,
<a href="http://stripsjournal.canalblog.com/tag/ramadan" rel="tag">ramadan</a>,
<a href="http://stripsjournal.canalblog.com/tag/religion" rel="tag">religion</a>,
<a href="http://stripsjournal.canalblog.com/tag/%C3%A9lections" rel="tag">élections</a>
</div>
<p><p style="text-align: center;"><a name="IMG_101392446"
href="http://p2.storage.canalblog.com/24/72/177230/101392446_o.jpg" target="_blank"><img
src="http://p2.storage.canalblog.com/24/72/177230/101392446.jpg" border="0" alt="01-1177-
Houellebecq" width="355" /></a></p>
相反,OR 完全省略了标记并产生以下输出:
<h3>Les prédictions du mage Houellebecq - Charlie Hebdo N°1177 - 7 janvier 2015</h3>
<p><p style="text-align: center;"><a name="IMG_101392446"
href="http://p2.storage.canalblog.com/24/72/177230/101392446_o.jpg" target="_blank"><img
src="http://p2.storage.canalblog.com/24/72/177230/101392446.jpg" border="0" alt="01-1177-
Houellebecq" width="355" /></a></p>
我是不是犯了一些可笑的心不在焉的错误,还是有什么问题?
OpenRefine 没有遗漏任何内容,网站根据它认为的客户端发送不同的 HTML。如果你看看你收到的HTML,如果它和我收到的一样,你会发现它是针对该站点的移动版本,而不是桌面版本。
不清楚他们使用什么作为触发发送移动版本的信号(而且 OpenRefine 没有提供对 HTML header 字段的很好控制),所以你可能无法轻松解决它,但 OpenRefine 不会丢弃它收到的任何东西。
此时,正确的用户代理字符串或浏览器 ID 可能会派上用场。伪造一个发送请求的真实浏览器,而不是我们默认的 "OpenRefine/2.6".
用户代理字符串如果使用开发版或者修改一下: 如果你想调整或设置用户代理又名浏览器 ID,那么你可以在底部这样做:https://github.com/OpenRefine/OpenRefine/blob/master/main/src/com/google/refine/RefineServlet.java
然后构建。
如果使用标准版:
为简单起见,您可以导航到 http://localhost:3333/preferences
并设置名为 "User-Agent" 的 属性 等于您想要的值,例如 "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"