请求返回部分页面

时间:2016-10-19 10:12:25

标签: python beautifulsoup python-requests

我试图解析用户滚动时加载的网站数据。滚动时可以显示有限数量的元素,但使用此元素仅给出第一部分(112个中的25个):

url = "http://url/to/website"
response = requests.get(url)
soup = BeautifulSoup(response.text)

如何告诉request"滚动"在返回html之前?

编辑:显然请求不要这样做,我可以在Python中使用什么解决方案?

2 个答案:

答案 0 :(得分:5)

你不能。问题是基于对请求的误解;它只加载页面的内容。无尽的滚动由Javascript提供支持,Javascript要求不做任何事情。

你需要像Selenium这样的浏览器自动化工具才能做到这一点;或者找出滚动JS正在使用的Ajax端点并直接加载它。

答案 1 :(得分:2)

  

您唯一应该知道的是serverlet如何工作。

通常,onScrollonClick或任何其他事件会触发AJAX request到服务器。客户端javascript将呈现这些返回(JSON / XML ...)所以你应该做的唯一事情就是将这些AJAX请求重复到同一服务器以获取这些数据。

例如,浏览器中的操作如下所示:

1. Enter url on browser   
> [HTTP GET REQUEST] http://url/to/website

2. Scroll on the page
> [AJAX GET] http://url/to/website/1
> [javascript on front-end will process those data]

3. Then, keeping scrolling on the page
> [AJAX GET] http://url/to/website/2
> [javascript on front-end will process those data]

4. ... (and so on)

问。如何使用python获取这些数据?

一个。一种简单的方法是使用browser > inspect > network_tab来查找在该页面中滚动时发送的AJAX请求。并通过python重复那些带有对应标头的AJAX请求。