1

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

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

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>

我是否犯了一些可笑的心不在焉的错误,还是与 OR 有什么关系?

4

2 回答 2

1

OpenRefine 没有遗漏任何内容,网站根据它认为客户端的内容发送不同的 HTML。如果您查看收到的 HTML,如果它与我得到的相同,您会发现它是针对网站的移动版本,而不是桌面版本。

目前尚不清楚他们使用什么信号来触发移动版本的发送(并且 OpenRefine 没有提供对 HTML 标头字段的很好控制),因此您可能无法轻松解决它,但 OpenRefine 不是丢弃它收到的任何东西。

于 2015-01-11T20:57:15.797 回答
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, like Gecko) Chrome /41.0.2228.0 Safari/537.36"

于 2015-01-12T16:54:08.490 回答