使用 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"