Axios被CORS阻止,但HtmlPasser没有?(网络浏览器)

2024-09-28 05:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用HTMLParser模块的pythonwebscraper。它的网站是http://consulta.siiau.udg.mx/wco/sspseca.consulta_oferta?ciclop=202120&cup=D&mostrarp=100000&ordenp=2

现在我需要做同样的事情,但是基于web浏览器的使用javascript,所以我尝试使用axios获取原始HTML,但我一直得到“对XMLHttpRequest的访问已被CORS策略阻止”

我试过的是

axios.post('http://consulta.siiau.udg.mx/wco/sspseca.consulta_oferta', {
        ciclop: '202120',
        cup: 'D',
        mostrarp: 10000,
        ordennp: 2,
      })
      .then((response) => {
        console.log(response)
      })

axios.get('http://consulta.siiau.udg.mx/wco/sspseca.consulta_oferta?ciclop=202120&cup=D&mostrarp=100000&ordenp=2',
        { crossdomain: true }
      )
      .then((response) => {
        console.log(response)
      })

我知道,在javascript中,他们通常使用无头浏览器,就像Puppeter中的浏览器一样,但是因为这个项目是一个网站 我不能使用Node.js模块

现在,我实现的解决方案是让服务器运行一个FlaskAPI来处理html获取,然后将其发送回客户端进行处理,但是如果客户端能够这样做的话,我的服务器性能将得到缓解


Tags: 模块httpresponse浏览器cupmxconsultaaxios
1条回答
网友
1楼 · 发布于 2024-09-28 05:24:04

简而言之,您不能使用fetch API或XMLHTTPRequest访问浏览器的跨源策略不允许的资源

出于安全原因,浏览器限制从脚本启动的HTTP请求。web应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包含正确的CORS头

您可以使用无头浏览器(Puppeter)访问网页,例如使用:

 await page.goto('https://example.com');

这相当于将http://example.com放入浏览器栏并按ENTER键。该页面上的任何脚本都受到与以前相同的跨源限制。但是,告诉浏览器访问http://example.com本身并不是跨源请求

相关问题 更多 >

    热门问题