如何从动态加载的页面中获取价值?

时间:2016-09-03 21:36:14

标签: python html httprequest httpresponse

我正在尝试抓取的网站主页显示四个标签,其中一个标签显示“[Number] Available Jobs”。我有兴趣刮取[Number]值。当我在Chrome中检查页面时,我可以看到/* clear Timeout */ clearTimeout(timer); 标记中包含的值。

enter image description here

但是,当我直接查看页面源时,<span>标记中没有任何内容。我计划使用Python <span>模块发出HTTP GET请求,然后使用正则表达式从返回的内容中捕获值。如果内容不包含我需要的数字,这显然是不可能的。

我的问题是:

  1. 这里发生了什么?如何将值动态加载到 页面,显示,然后不出现在HTML源代码中?

  2. 如果该值未出现在页面源中,我该怎么办 到达它?

3 个答案:

答案 0 :(得分:2)

如果内容未出现在页面源中,则可能是使用javascript生成的。例如,站点可能具有列出作业的REST API,Javascript代码可以从API请求作业并使用它在DOM中创建节点并将其附加到可用作业。这只是一种可能性。

废弃此信息的一种方法是弄清楚javascript如何工作并让你的python scraper做同样的事情(例如,如果它正在使用一个简单的REST API,你只需要向它发出请求相同的网址)。通常这不是那么容易,所以另一种选择是使用支持javascript的浏览器如selenium进行抓取。

我想提到的最后一件事是that regular expressions are a fragile way to parse HTML,你通常更喜欢使用像BeautifulSoup这样的库。

答案 1 :(得分:0)

1.一个值可以用ajax动态加载,ajax异步加载意味着站点的其余部分不等待ajax被渲染,这就是为什么当你得到DOM时,加载了ajax的元素没有出现在它

2.对于抓取动态内容,您应该使用selenium here a tutorial

答案 2 :(得分:0)

  1. 对于动态加载的数据,您应该在网络中查找xhr请求,并且如果您可以为您提供有效的数据,那么瞧!
  2. 你可以幻影js,它是一个无头浏览器,它用动态加载的内容捕获该页面的html。