如何通过网络抓取更改HTML?

时间:2020-05-11 21:25:20

标签: python request innerhtml

我正在学习网络爬网,想知道如果要在按下按钮后更改HTML,如何爬网网站。我可以用Selenium做到这一点,但这很慢。如何处理请求?

EX:我从https://www.collegeswimming.com/swimmer/356597/开始,我想抓取当您单击“最快”页面上的按钮时出现的表格。请注意,在HTML源代码中,直到您按下“最快”,该表才存在,并且一旦按下“最快”,URL便保持不变,并且仍然是“ https://www.collegeswimming.com/swimmer/356597/”。

我使用了检查元素,然后在“网络”下查看了单击“最快”按钮时发出的请求。该请求为“ https://www.collegeswimming.com/swimmer/356597/times/fastest/”。请注意,无法单独导航到此位置,因为它只会导致原始的https://www.collegeswimming.com/swimmer/356597。我尝试这样使用请求:

import requests
r=requests.get(“https://www.collegeswimming.com/swimmer/356597/times/fastest”)
print(r.text)
print(r.content)
r.json()

可悲的是,这些都不起作用。我正在寻找的响应是单击“最快”后显示的响应,可以通过“检查元素->网络->最快/->响应”查看,但是我使用上述代码得到的响应只是html原始页面“ https://www.collegeswimming.com/swimmer/356597

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果在“网络”选项卡上的请求上查看请求标头,则应该看到X-Requested-With标头,其值为XMLHttpRequest,表明它是AJAX调用。您可以像这样在请求中添加此请求标头:

url = "https://www.collegeswimming.com/swimmer/356597/times/fastest/"
r = requests.get(url, headers={"X-Requested-With": "XMLHttpRequest"})
print(r.text)