当前位置: 首页 > 后端技术 > Python

或者比Selenium更好?Python使用Splash访问Google获取相应内容

时间:2023-03-26 12:45:19 Python

上次讲剧作家获取网站数据。不过这位编剧,他毕竟是一个自动化调试工具,会占用一点点本地资源。这次飞溅是不同的。它部署在服务器上。你可以把加载的资源放在一台或多台服务器上,在服务器上实现你要请求的网站,请求渲染,返回最终的HTML。给你,让你解析数据。1.Splash及Splash配置Splash是一个JavaScript渲染服务,是一个带有HTTPAPI的轻量级网络浏览器。同时也接入了python3的Twisted和QT5库。Spalsh配置这里介绍一下Liunx+Docker的配置,步骤如下:安装Docker,确保安装的Docker版本>=17,使用Docker拉取镜像启动容器,启动Splash服务1.拉取镜像:2.$sudodockerpullscrapinghub/splash3.启动容器:$sudodockerrun-it-p8050:8050--rmscrapinghub/splash配置完成后,输入服务器地址和端口号8050inyourbrowser验证是否成功:这样,你就成功了2.Splash+requests的使用Splash是一个用Lua语言写的脚本,用Lua语言模拟浏览器加载过程,返回各种结果,比如如网页源代码,截图等。那么怎么用python使用呢?Splash有一个强大的接口:execute。该接口可以实现与Lua脚本的对接。当然Splash还有render接口,这里就不一一列举了。如果想了解更多,请自行查看文档。1.importrequests2.importjson3.4.splashUrl=“我的splash地址:8050/execute”5.defget_splash():6.param={7.“超时”:10,8.“url”:'https://www.google.com/',9.“用户代理”:“Mozilla/5.0(Macintosh;英特尔MacOSX10_14_6)AppleWebKit/537.36(KHTML,如Gecko)Chrome/77.0.3865.120Safari/537.36“,10.”lua_source“:”“”11.功能main(Splash,args)12。plass:go(??args.url)13.飞溅:wait(5)14.plass.images_enabled=false=false15.返回splash。:html()16.结束17."""18.}19.响应=requests.post(url=splashUrl,data=json.dumps(param),headers={"content-type":"application/json"})20.print(response.text)这里是传递请求数通过post请求Splash接口,并且传递的param参数中不仅有splash的配置,还有lua_source中的Lua脚本。这部分是刚才在浏览器中打开的脚本:splashgo向args请求传入的url连接,等待10秒没有获取到图片,最后返回请求的html内容:1.functionmain(splash,args)2.splash:go(args.url)3.splash:wait(5)4.splash.images_enabled=false5.returnsplash:html()6.end其中,请求execute的param参数也可以加上参数,比如里面的timeout就是设置5秒的超时时间,什么get/post请求,启用或者禁用图片加载,禁用或者启用js都可以加上,具体请自行查看文档:3.Splash+requestsProxy配置嘿嘿,Python如何在没有代理的情况下获取内容。Splash的代理配置很简单,在参数param中添加代理参数即可:1.param={2."timeout":10,3."url":'https://api.myip.la/en?json',4."user-agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_14_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/77.0.3865.120Safari/537.36",5."proxy":getApiIp(),6."lua_source":"""7.functionmain(splash,args)8.splash:go(args.url)9.splash:wait(5)10.aldsenable1age_splash.Returnsplash:html()12.End13."""14.}看到这里的IP地址已经挂了。说到代理,我这里用的是ipidea的代理。一个稳定高效的agent就像是你数据采集路上的一盏明灯,又像是黑暗中的一束光。即使你再次被封禁,它也会带你去获取你想要的数据。:)新用户可以白嫖流量。地址:http://www.ipidea.net/以前都是用Splash来处理前后端分离的网页。有时候后台接口获取到的json数据并不是我们想要的。在写这篇文章之前,我什至以为Splash只能获取get请求,没想到这个东西用处很大。写完文章后,我也学到了很多东西。最后,我想提一下,Splash可以配置多服务器负载均衡。如果已经有多个Splash服务器,使用公网IP的Nginx服务器,修改nginx配置文件,配置鉴权。用过的。