我在 python 中工作。我获得了一个名为 AdInsight 的网站的免费试用权限。这是它的结构示例:this。现在的重点是该网站不是免费访问,但我必须通过我的机构申请免费试用,这样当我尝试使用 Bs4 或类似方法抓取它时,它看起来似乎对我没有要求进入网页(自从我尝试“正常”输入时,我设法做到了。也许一个问题是我正在 chrome 中打开网页并在 Safari 中处理本地环境。但是,有点 html 代码似乎与我有关的是以下内容:
</script>
<script class="optanon-category-2" type="text/plain">
dataLayer = [{
'user': {
'visitor_id': getVisitorIdFromLocalStorage()
},
'session': {
'authentication':{
'authenticationID': '1',
'method': 'anonymous'
}
},
'page': {
'pageInfo': {},
'category': {
'pageType': ''
},
'attributes': {
'template': '',
}
},
'privacy': {},
'version': '1.0.0',
}];
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-N8RLKKZ');
function getVisitorIdFromLocalStorage() {
return localStorage.getItem("visitor_id");
}
</script>
<noscript>
<h1 class="noScriptMsg">
Either you have JavaScript disabled or your browser does not support Javascript . To work properly, this page requires JavaScript to be enabled.
<br/>
<a href="https://www.enable-javascript.com/" target="_blank">
How to enable JavaScript in your browser?
</a>
</h1>
</noscript>
</head>
<body>
<input id="userEmailId" name="userEmailId" type="hidden" value=""/>
<input id="userBpIds" name="userBpIds" type="hidden" value="1"/>
<input id="userIsLoggedIn" name="userIsLoggedIn" type="hidden" value="false"/>
<input id="userIsLoginTypeInstitutional" name="userIsLoginTypeInstitutional" type="hidden" value="false"/>
<input id="userIsAnonymous" name="userIsAnonymous" type="hidden" value="true"/>
<input id="userIsAnonymousUser" name="userIsAnonymousUser" type="hidden" value="true"/>
有没有一种方法可以让我简单地递归访问网站的搜索引擎并获取我需要的一条信息”(如果您没有权限,则隐藏该信息)
谢谢,
费德里科
IIUC 您的抓取不起作用,因为您需要在该网站上登录。
Web 中的身份验证是通过 cookie(通过Cookie
HTTP 请求中的标头发送)完成的,因此在您的每个 HTTP 请求中,您应该包含Cookie
要进行身份验证的标头。
因此,我看到有 2 个常见选项:
Cookie
从 Networking 选项卡复制标题。然后为您用于抓取的 HTTP 请求库设置此标头。Selenium
在到网站注册,然后刮使用本网站Selenium
另一种选择是检查该网站是否有公共 API 文档。如果他们这样做了,那么您应该在那里找到所有需要的信息,很可能会有一些您可以生成的身份验证令牌用作 HTTP 请求授权中的标头。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句