有没有其他方法可以从动态网站中提取数据,而不是使用硒?
Is there any other way to extract data from dynamic website, rather than using selenium?
我正在尝试从网站 https://shop.nordstrom.com/ 中提取所有产品(如衬衫、T 恤等)的数据。该页面是动态加载的。我知道我可以将 selenium 与无头浏览器一起使用,但这也是一个耗时的过程并且查找具有奇怪 ID 和 class 名称的元素,这也不太有希望。
所以我想查找网络工具,如果我能找到 API 的路径,从那里加载数据(XHR 请求)。但我找不到任何有用的东西。那么有没有办法从网站上获取数据呢?
如果您不想使用 selenium
,那么替代方案是使用像 bs4
这样的网络解析器,或者只使用 request
模块。
找到对 API
的调用是正确的。 XHR
请求可以在 network
选项卡下看到,但是出现的大量资源使得理解正在发出的请求变得复杂。一个简单的解决方法是使用以下方法:
Instead of Network
tab go to the console
tab. There click on the settings
icon, and then tick just the option Log XMLHTTPRequests
.
现在刷新页面并向下滚动以启动动态调用。您现在将能够以更清晰的方式查看所有 XHR
的日志。
例如
向 URL
发出获取请求会得到一堆 Json
对象。您现在可以使用此 url
和您可以派生的其他内容将请求直接发送到 URL
.
请参阅关于如何将 url
与请求模块集成以获取数据的答案 。
我正在尝试从网站 https://shop.nordstrom.com/ 中提取所有产品(如衬衫、T 恤等)的数据。该页面是动态加载的。我知道我可以将 selenium 与无头浏览器一起使用,但这也是一个耗时的过程并且查找具有奇怪 ID 和 class 名称的元素,这也不太有希望。
所以我想查找网络工具,如果我能找到 API 的路径,从那里加载数据(XHR 请求)。但我找不到任何有用的东西。那么有没有办法从网站上获取数据呢?
如果您不想使用 selenium
,那么替代方案是使用像 bs4
这样的网络解析器,或者只使用 request
模块。
找到对 API
的调用是正确的。 XHR
请求可以在 network
选项卡下看到,但是出现的大量资源使得理解正在发出的请求变得复杂。一个简单的解决方法是使用以下方法:
Instead of
Network
tab go to theconsole
tab. There click on thesettings
icon, and then tick just the optionLog XMLHTTPRequests
.
现在刷新页面并向下滚动以启动动态调用。您现在将能够以更清晰的方式查看所有 XHR
的日志。
例如
向 URL
发出获取请求会得到一堆 Json
对象。您现在可以使用此 url
和您可以派生的其他内容将请求直接发送到 URL
.
请参阅关于如何将 url
与请求模块集成以获取数据的答案