如何在python中使用requests.get获取数据之前等待页面加载,而不使用api

如何在python中使用requests.get获取数据之前等待页面加载,而不使用api,python,python-3.x,web-scraping,python-requests,Python,Python 3.x,Web Scraping,Python Requests,我正在使用Python和请求库进行web抓取。我在加载页面时遇到问题,我想发出请求。获取结果前请等待 我看到一些人与他们使用Selenium解决的问题相同,但我不想使用其他API。我想知道是否可以只使用urllib、urllib2或请求 我试着在get方法中加入time.sleep,但没有效果。 似乎我需要找到网站在显示数据之前从哪里获得数据,但我找不到 import requests def search(): url= 'https://academic.microsoft

我正在使用Python和请求库进行web抓取。我在加载页面时遇到问题,我想发出请求。获取结果前请等待

我看到一些人与他们使用Selenium解决的问题相同,但我不想使用其他API。我想知道是否可以只使用urllib、urllib2或请求

我试着在get方法中加入time.sleep,但没有效果。 似乎我需要找到网站在显示数据之前从哪里获得数据,但我找不到

import requests

def search():
        url= 'https://academic.microsoft.com/search?q=machine%20learning'
        mySession = requests.Session()
        response = mySession.get(url)
        myResponse = response.text
响应是加载页面的html代码。如果您转到代码中带有加载块的链接,您可以看到它,但我需要获得研究结果。

请求无法从ajax获取加载的元素。看

从web服务器读取数据-加载网页后


请求所做的唯一事情是下载html,但它不会解释javascript代码,因此无法加载通常通过web浏览器中的ajax或使用Selenium加载的元素。

此网站正在发出另一个请求,并使用javascript呈现它。不能对请求执行javascript。这就是为什么有些人使用硒

在没有浏览器的情况下不能使用

如果您想要专门从academical.microsoft.com获取数据,请使用他们的api

import requests

url = 'https://academic.microsoft.com/api/search'

data = {"query": "machine learning",
        "queryExpression": "",
        "filters": [],
        "orderBy": None,
        "skip": 0,
        "sortAscending": True,
        "take": 10}

r = requests.post(url=url, json=data)

result = r.json()

您将获得格式良好且易于使用的数据。

我更了解,非常感谢您的回答!!你彻底解决了我的问题。事实上,这是我遇到的唯一一个这样的问题,我在GoogleScholar和其他人身上也做了同样的事情,使用了标题、cookies等,效果很好。你的回答和另一个帮助我更好地理解了我在做什么。非常感谢你!!