Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以从网站上执行智能搜索?_Python_Html_Web Scraping - Fatal编程技术网

Python 有没有一种方法可以从网站上执行智能搜索?

Python 有没有一种方法可以从网站上执行智能搜索?,python,html,web-scraping,Python,Html,Web Scraping,我在python中工作。我免费试用了一个叫做AdInsight的网站。这是它的结构示例:。现在的问题是,该网站不是免费访问的,但我必须通过我的机构申请免费试用,这样,当我试图使用Bs4或类似的工具来刮取它时,在我看来,似乎我没有进入该网页的要求(从我尝试“正常”进入该网页后,我就有了这种要求)我设法做到了。也许一个问题是我正在用chrome打开网页,并在Safari的本地环境中工作。 然而,与我相关的html代码如下: </script> <script class=&qu

我在python中工作。我免费试用了一个叫做AdInsight的网站。这是它的结构示例:。现在的问题是,该网站不是免费访问的,但我必须通过我的机构申请免费试用,这样,当我试图使用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"/>

数据层=[{
“用户”:{
“访问者id”:GetVisitionFromLocalStorage()
},
“会话”:{
“身份验证”:{
'authenticationID':'1',
“方法”:“匿名”
}
},
“第页”:{
'pageInfo':{},
“类别”:{
“页面类型”:”
},
“属性”:{
“模板”:“,
}
},
“隐私”:{},
“版本”:“1.0.0”,
}];
(函数(w,d,s,l,i){w[l]=w[l]||【】;w[l]。推送({'gtm.start':
new Date().getTime(),事件:'gtm.js'});var f=d.getElementsByTagName[0],
j=d.createElement,dl=l!=“数据层”?“&l=”+l:“”;j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(窗口、文档、“脚本”、“数据层”、“GTM-N8RLKKZ”);
函数getVisitionFromLocalStorage(){
返回localStorage.getItem(“访问者id”);
}
您禁用了JavaScript,或者您的浏览器不支持JavaScript。要正常工作,此页面需要启用JavaScript。

是否有一种方法可以让我简单地递归访问网站的搜索引擎,并获取我需要的信息(如果您没有权限,则隐藏该信息)

谢谢,


费德里科

IIUC你的抓取不起作用,因为你需要登录该网站

Web中的身份验证是通过Cookie完成的(通过HTTP请求中的
Cookie
头发送),因此在每个HTTP请求中都应该包含该
Cookie
要验证的标头

因此,我看到了两种常见的选择:

  • 在浏览器中手动在网站上进行身份验证,转到DevTools并从“网络”选项卡复制
    Cookie
    标头。然后为用于抓取的HTTP请求库设置此标头
  • 使用
    Selenium
    登录网站,然后使用
    Selenium

  • 另一个选项是检查该网站是否有公共API文档。如果有,您应该在那里找到所有需要的信息,很可能会有一些身份验证令牌,您可以生成这些令牌作为HTTP授权请求的标头。

    此网站的性质是,您可以了解自己的身份尝试这样做。你向我们展示了你用来完成它的代码,它要么不能完全工作,要么不能按照你期望的方式工作,然后根据这一点提问。我建议你寻找这个网站提供的搜索api来运行任何搜索查询,以获取你可以从该网站获得的任何信息。我认为最好是从这里开始。那么,我是否正确理解,为了访问您想要的页面,您需要先登录?@GProst感谢您的回复。因此,我在一家学术机构工作,该机构为我提供了网站的免费试用。我正在家中执行远程访问,并且已经在谷歌浏览器中输入了网站凭据