我正在尝试抓取的网站主页显示四个标签,其中一个标签显示“[Number] Available Jobs”。我有兴趣刮取[Number]值。当我在Chrome中检查页面时,我可以看到/* clear Timeout */
clearTimeout(timer);
标记中包含的值。
但是,当我直接查看页面源时,<span>
标记中没有任何内容。我计划使用Python <span>
模块发出HTTP GET请求,然后使用正则表达式从返回的内容中捕获值。如果内容不包含我需要的数字,这显然是不可能的。
我的问题是:
这里发生了什么?如何将值动态加载到 页面,显示,然后不出现在HTML源代码中?
如果该值未出现在页面源中,我该怎么办 到达它?
答案 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)