[英]Python, webscraping in website with embedded java script
我正在抓取一个网站。
在这些代码行之后:
from bs4 import BeautifulSoup as soup
parse_soup = soup(r.text, 'html.parser')
我得到一些 html 并在底部:
<script type="text/javascript">
window.ContextPath = "/BOBIBOBI/Public/";
window.ControllerName = "Pubblicazioni";
window.ActionName = "Index";
window.LoginUrl = "/BOBIBOBI/Account/Login";
window.Locale = "it";
</script>
<script src="/BOBIBOBI/Bundles/all?v=x1x2x3x4x5x6x"></script>
<script type="text/javascript">
$("#table").DataTable({
order: [],
dom: "<'row actions'<'col-sm-6'l><'col-sm-6'<'pull-right input-group input-group-sm'f<'input-group-btn insert'>>>><'row'<'col-sm-12 table-wrapper'tr>><'row'<'col-sm-4'i><'col-sm-4 text-center'><'col-sm-4'p>>",
drawCallback: function (settings) {
var csrf = $("form.filter [name='__RequestVerificationToken']");
$(".postlink-download").each(function () {
var params = $(this).data("params");
if (params) {
params[csrf.attr("name")] = csrf.val();
}
});
}
}).on("beforeDetailInline", function (e, tr, data) {
$("#filter_Titolo_").val($(data[0]).data("value"));
$("#filter_Id_").val($(data[3]).data("value"));
$("#filter_ExtKey_").val($(data[4]).data("value"));
$("#filter_TipoPubblicazione_").val($(data[5]).data("value"));
$("#filter_SheetName_").val($(data[8]).data("value"));
$("#modalTitleDetails").text("BOBIBOBI " + data[7]);
$("#detail-date").text(tr.find("td:eq(1)").text());
$.ajax({
type: "POST",
data: $("form.filter").serialize(),
url: "/BOBIBOBI/Public/Pubblicazioni/Detail",
success: function (data, textStatus) {
$("#divDetails").html(data);
$("#tableDetails").DataTable({
order: [],
dom: "<'row'<'col-sm-12 table-wrapper'tr>><'row'<'col-sm-4'i><'col-sm-4 text-center'B><'col-sm-4'p>>"
});
$("#modalDetails").modal("show");
}
});
}).on("beforeCreateActionUrl", function (e, tr, data, className) {
if (className === "detail-download") {
return "/BOBIBOBI/Public/Pubblicazioni/ExportDetails";
}
});
</script>
</body>
</html>
我需要刮掉网站中包含的表格,身份验证工作正常。 我不习惯 java 和 python。
我想从这样的请求中获取一些数据:
r = requests.post(SOURCE_URL, data=WHATDATA, headers=HEADERS, verify=False)
我知道 source_url 和标题。 我知道表格名称及其发布日期。 我的问题是:我应该把什么放在 WHATDATA 中以便我可以写:
data_parsed = json.loads(r.content.decode("utf-8"))
并在我的表格中获取 data_parsed。希望这很清楚,否则我可以澄清更多。
谢谢
也许有点晚了,我想我在同一个网站上工作......这个解决方案对我有用,你必须使用行中的参数创建 JSON 并将其添加为属性:
var data = $('#table').DataTable().rows().data().toArray()[0];
var titolo = $(data[0]).data("value");
var id = $(data[3]).data("value");
var extkey = $(data[4]).data("value");
var tipopubb = $(data[5]).data("value");
var sheet = $(data[8]).data("value");
var idsezione = $(data[9]).data("value");
var idparent = $(data[2]).data("pk");
var token = $("form.filter [name='__RequestVerificationToken']").val();
var params = {
details: {
Titolo: titolo,
Id: id,
ExtKey: extkey,
TipoPubblicazione: tipopubb,
SheetName: sheet,
IdSezione: idsezione,
ParentId: idparent
},
__RequestVerificationToken: token
};
var e = new Event('click');
var link = $('<a class="detail-download">').attr("href", "/sunset/Public/Pubblicazioni/ExportDetails").data("params", params).get(0);
submitAjax(e, link);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.