我正在 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>有没有一种方法可以让我简单地递归访问网站的搜索引擎并获取我需要的一条信息(如果您没有权限,该信息将被隐藏)
1 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
IIUC 您的抓取不起作用,因为您需要登录该网站。
Cookie
Web 中的身份验证是通过 cookie 完成的(通过HTTP 请求中的标头发送),因此在每个 HTTP 请求中,您应该包含Cookie
要进行身份验证的标头。
所以,我看到有两个常见的选项:
在浏览器中手动在网站上进行身份验证,转到 DevTools 并
Cookie
从“网络”选项卡复制标头。然后为您用于抓取的 HTTP 请求库设置此标头。用于
Selenium
登录网站,然后使用抓取网站Selenium
另一种选择是检查该网站是否有公共 API 文档。如果他们这样做,那么您应该在那里找到所有需要的信息,很可能您可以生成一些身份验证令牌,以用作 HTTP 授权请求中的标头。
添加回答
举报
0/150
提交
取消