使用OpenRefine / GoogleRefine进行刮擦省略<div class =“itemfooter”>标签</div>

时间:2015-01-10 21:26:40

标签: html web-scraping openrefine

我想抓一个简单的页面,并认为我会使用OpenRefine来获取每个页面的HTML,然后解析它。我正在追踪特定标签的内容,但奇怪的是,OpenRefine没有显示该特定标签。这是OR第一次省略标签,我不知道为什么。以下是具体内容:

我正在抓取分配给以下博客上每篇博文的类别:

http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p00-0.html

网页网址范围从p00-0.html到p330-0.html。

所以我有一个页面列,从0到330,我将其与URL结合起来:

http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p”+ value +“ - 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>

我是否犯了一些荒谬的心不在焉的错误,或者与OR有关?

2 个答案:

答案 0 :(得分:1)

OpenRefine并不排除任何东西,网站根据它认为客户端的内容发送不同的HTML。如果你看一下你收到的HTML,如果它和我得到的一样,你会发现它适用于网站的移动版本,而不是桌面版本

目前还不清楚他们使用什么作为触发移动版本发送的信号(OpenRefine并不能很好地控制HTML标题字段),所以你可能不会能够轻松解决它,但OpenRefine并没有放弃它收到的任何东西。

答案 1 :(得分:1)

这是适当的用户代理字符串或浏览器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,如Gecko)Chrome / 41.0.2228.0 Safari / 537.36“