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

2024-04-19 20:52:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力搜索的网站主页显示了四个标签,其中一个标签上写着“[数字]可用工作”。我对刮取[Number]值感兴趣。当我在Chrome中检查页面时,我可以看到包含在<span>标记中的值。你知道吗

enter image description here

但是,当我直接查看页面源代码时,<span>标记中没有任何内容。我计划使用Pythonrequests模块发出httpget请求,然后使用regex从返回的内容中捕获值。如果内容不包含我需要的数字,这显然是不可能的。你知道吗

我的问题是:

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

  2. 如果该值没有出现在页面源代码中,我可以怎么做 够到了吗?


Tags: 模块标记number内容源代码网站数字主页
3条回答
  1. 对于动态加载的数据,您应该在网络中查找xhr请求,如果您可以使该数据对您有效率,那就好!!你知道吗
  2. 你可以使用幻影js,它是一个无头浏览器,它捕获了动态加载内容的html页面。你知道吗

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

消除这些信息的一种方法是弄清楚javascript是如何工作的,并让python scraper做同样的事情(例如,如果它使用的是一个简单的restapi,那么您只需要向相同的URL发出请求)。通常这并不是那么容易,所以另一种选择是使用支持javascript的浏览器(如selenium)进行刮取。你知道吗

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

1.一个值可以用ajax动态加载,ajax异步加载这意味着站点的其余部分不会等待ajax被呈现,这就是为什么当您获得DOM时,用ajax加载的元素不会出现在其中。你知道吗

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

相关问题 更多 >