【问题标题】:How to curl item that doesn't happen on pageLoad如何卷曲页面加载上未发生的项目
【发布时间】:2015-02-22 02:25:10
【问题描述】:

我正在尝试在 IMDb 上获取电影的标题:

http://www.imdb.com/title/tt0049902/

但是,如果我这样做:

$ curl http://www.imdb.com/title/tt0049902/

所包含的标题是 Un condamné à mort s'est échappé ou Le vent souffle où il veut,而不是“A Man Escaped”,这正是我想要的。这是 curl 响应的 HTML:

<h1 class="header"> <span class="itemprop" itemprop="name">Un condamné à mort s'est échappé ou Le vent souffle où il veut</span>
        <span class="nobr">(<a href="/year/1956/?ref_=tt_ov_inf"
>1956</a>)</span>
</h1>

看起来英文标题必须在初始页面加载后插入。那我该如何获取这个标题呢?

【问题讨论】:

  • 看起来没有办法严格从您从 curl 获得的初始 HTML 转储中获取它。也许最好使用他们的official API 而不是抓取他们的网页。
  • 如果它不在源代码中,那么它很可能注入了脚本。您需要一个无头浏览器来生成生成的 html
  • 实际上,正如我刚刚回答的那样,您似乎只需要指定适当的 Accept-Language 标头 - 所以我相信不涉及 javascript(但我不确定所以我离开了标记)虽然我100%确定python不是(所以我确实删除了那个流浪标签)。借调@HuuNguyen 的建议,即更喜欢官方 API 而不是抓取:-)

标签: javascript curl


【解决方案1】:
$ curl --header "Accept-Language: en"  http://www.imdb.com/title/tt0049902/ > b.txt
$ grep 'meta.*title' b.txt
<meta property="og:url" content="http://www.imdb.com/title/tt0049902/" />
<meta property='og:title' content="A Man Escaped (1956)" />
<meta name="title" content="A Man Escaped (1956) - IMDb" />

因此,--header "Accept-Language: en" 在这种情况下似乎有所帮助(同时,如果不指定该标题,您将获得电影的原始语言 - 法语)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    相关资源
    最近更新 更多