Python获取请求并从搜索中检索数据

时间:2018-11-13 20:35:03

标签: python search python-requests

我正在尝试使用请求模块从此网站检索数据: https://toelatingen.ctgb.nl/

例如,当我在“ Zoekterm”字段中输入“ 11462”时,我想接收找到的数据。

data = { "searchTerm": "11462"}
session = requests.Session()
r = session.post('https://toelatingen.ctgb.nl/',data=data)

body_data = r.text

不幸的是,body_data的内容不包含所搜索的信息。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

之所以没有获得响应数据,是因为该站点未在该URL上进行搜索。相反,它会调用https://toelatingen.ctgb.nl/nl/admissions/overview

当您尝试从Internet上获取信息时,您要做的第一件事就是检查Web浏览器如何获取数据。如果打开所选浏览器随附的任何检查工具(通常热键为ctrl + shift + i),则应该能够找到一个“网络”选项卡,该选项卡可跟踪浏览器发出的请求和响应。打开后,让您的浏览器显示所需的信息,并在其中查看“网络”选项卡。检查出现的所有响应以找到具有所需信息的响应,然后复制浏览器使用的请求。

在您的情况下:

  • 根页面首先从https://toelatingen.ctgb.nl/加载空页面
  • 然后加载一堆静态文件(主要是woff和js;这些文件用于设置网页的样式并处理不同的过程)
  • 然后它调用https://toelatingen.ctgb.nl/nl/admissions/overview。我们可以确定这是我们目前想要的呼叫,因为响应是一个json,其中包含我们在屏幕上看到的信息。
  • 然后我们从该请求中复制所有信息标题和表格,一行一行,插入,然后查看requests模块是否返回相同的json。
  • 如果没有,那么很可能意味着我们丢失了某些东西(最常见的是CSRF令牌或特殊的Accept-Encoding),我们需要做更多的修改。
  • 我还建议花一些时间来修剪部分请求数据/标题:大多数情况下,它们包含服务器实际上不需要的额外条款。这样可以节省空间,让您更好地了解可以更改请求的哪些部分。