应用场景假设:做研究分析时需要对一批企业的各种维度字段进行分析,企查查会员本身是提供导出功能的,但哪怕是svip,导出的字段也不全,这种时候只用手动在企业页面里采集时,耗时巨大,所以考虑用脚本自动采集(前提假设已有企查查svip帐号)。
最简单的脚本采集是request请求,这类请求只适合小网站,大一点的平台都会屏蔽,哪怕headers里加一堆参数,可以直接不考虑。
然后就是selenium的模拟浏览器打开了,大部分网站都可以模拟,这里通过selenium的driver.get打开企业详情网页,再用driver.page_source就可以获取到。
但是,通过浏览器里对企业详情网页就行查看源代码发现,html标签内的数据少,提取麻烦,反而是网页源代码最末尾有企业详细接口返回数据,按理说这类接口是单独作为接口来请求返回,但该平台把其作为js执行结果嵌入了企业详情页的html,同时!这段嵌入的接口返回数据只能在浏览器里查看源代码发现,用driver.page_source获取的源代码是这段返回数据的。
所以有这么一类网站,有js加载嵌入结果到html中的信息,是用driver.page_source获取不到的,那么这类完全的html要怎么获取?答案是seleniumwire。
driver.get(url)
# 获取请求数据
for request in driver.requests:
if (str)(request.url).find("请求地址")>=0:
res = request.response.body
核心就是就是seleniumwire的这个方法,不同于driver.page_source,可以更好获取完整的页面数据。
就这几句就可以,基础不好的有偿咨询。
接数据采集、数据治理、业务办公自动化、计算机问题处理等服务。