python - 通过AJAX请求在python中抓取动态数据表
问题描述
我想在 python 中实现一个演示后端脚本,以便通过 URL 抓取文档路径列表。如果我尝试使用 urllib.request 处理基本请求,它不会返回数据表的内容。它只是返回一个空内容,如下所示。因此,在这种情况下,可能会使用 AJAX 请求捕获数据表的内容。示例代码取自实际网站的主页(实际页面)。我认为这里的主要问题可能是象征性的。如何处理 python 端以捕获动态数据表的内容?
我在python端写的代码(Current python code)无法处理这个请求,返回“页面因不活动而过期”。
有什么建议,方向吗?
当前的python代码:
from requests import Session
session = Session()
session.head("mainpage")
response = session.post(
url= 'apiurl/getviewdatatable',
data= {
'name' : 'name',
'documentPath' : 'documentPath',
}
)
print(response.text)
实际页面:主页
<script>
$(document).ready(function () {
$('#posts').DataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": "apiurl/getviewdatatable",
"dataType": "json",
"type": "POST",
"data": {
_token: "5uC8cmrJRYnn2gB4TCU9EFj0wjgA8BtmqqO64Uk1",
}
},
"columns": [
{
"data": "name"
},
{
"data": "documentPath"
},
],
'createdRow': function (row, data, index) {
//
// if the second column cell is blank apply special formatting
//
$(row).addClass('table-row');
},
"language": {
"url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Turkish.json"
},
"rowReorder":{
selector:'td:nth-child(2)'
},
});
});
</script>
解决方案
您的 python 发布请求参数有问题。
首先让我解释一下实际页面在做什么。有一个表组件,它是数据表库的一部分。
在此页面中,数据表充满了 ajax 源。ajax 调用由数据表库内部脚本处理。您可以在此链接中查看数据表的 ajax 源示例页面https://datatables.net/examples/ajax/objects.html
但是这里在你的代码中 ajax 调用更详细。但是即使这样你也可以根据上面链接中的示例来理解列不是ajax调用的参数。这是 POST ajax 调用的参数部分
"data": {
_token: "5uC8cmrJRYnn2gB4TCU9EFj0wjgA8BtmqqO64Uk1",
}
因此,当您向此 apiurl 发送发布请求时,您必须发送与要抓取的页面相同的发布请求
这是使用 python 的正确发布请求:
from requests import Session
session = Session()
session.head("mainpage")
response = session.post(
url= 'apiurl/getviewdatatable',
data= {
'_token' : '5uC8cmrJRYnn2gB4TCU9EFj0wjgA8BtmqqO64Uk1'
}
)
print(response.text)
推荐阅读
- angular - 有没有办法通过静态 TranslationService 调用创建一个实用程序?
- visual-studio-code - VS Code ${workspaceFolder} 无法正确解析
- python - 连续检查字符串中的双字母
- python - 装饰循环内定义的函数
- jdbc - Kafka Connect 接收器到 Azure SQL 数据库
- delphi - 在 Delphi 中从 TEdgeBrowser 打印
- typescript - TypeScript 中泛型类型的模块导出和导入?
- python - 我有一个单词,我想知道它们是否在英语词典中
- python - 找到值时如何提取整行
- machine-learning - 在 Solr 中搜索向量与所有其他向量