【问题标题】:Web Scraping javascript in Python / R在 Python / R 中抓取 javascript
【发布时间】:2016-04-08 18:13:56
【问题描述】:

我正在做一些个人数据科学项目,其中之一是查看某些歌曲在收音机中播放的频率。

http://www.iheart.com/live/radio-1045-3401/

查看上面的 URL,当我查看页面源时,没有填充感兴趣的值。不知道为什么,但是当我将鼠标悬停在“正在播放”标题上时,当我在 chrome 中使用检查元素时,我可以看到正在播放的歌曲和艺术家的值。

例子:

a class="player-song" href="/artist/rem-3610/songs/-2450662/" title="Losing My Religion" data-reactid=".1hpdfx1l4ow.a.1.0.1.1">Losing My Religion</a

我的两个问题是:

  1. 为什么它没有显示在页面源代码中,但我可以在 Inspect Element 下看到它?
  2. 由于此信息未出现在页面源中,我将如何通过网络抓取该信息?

【问题讨论】:

  • 还没有检查,但它可能是由javascript生成的内容,在这种情况下你可以在python中使用selenium
  • 您也可以使用他们的 API 获取数据。developer.iheart.com/Api/login

标签: javascript python html r web-scraping


【解决方案1】:
  1. 大多数涉及动态元素的网页都有由浏览器为您解析和执行的 Javascript 生成和插入的页面元素。我怀疑,根据问题标题,您已经猜到了。

    您在页面源代码中看到的是 之前 Javascript 启动并更新它的原始 HTML。

  2. 您想要一个headless browser:没有图形用户界面的浏览器。这将为您解析和执行 Javascript,并相应地更新页面 HTML。


这是full list of headless browsers。请注意,您可以使用任何语言执行此任务。

【讨论】:

  • MechanicalSoup 在他们的自述文件中声明它不执行 javascript,而 RoboBrowser 是请求和 beautifulSoup 的混合体,所以我认为不是。也不确定机械化。不错的答案。
猜你喜欢
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 2020-12-24
  • 1970-01-01
相关资源
最近更新 更多