Python怎么获取Chrome浏览器控制台console的数据
问题描述:
传统的爬虫通过request、bs4、xpath、selenium等模块的使用可以实现网页数据的获取。但有些网页的数据也可在控制台日志中显示。因此是否有方法实现在控制台对数据进行提取?
以虎扑网页为例:
点击console可以看到,里面有三类信息:
- 顶部的 Mixed Content
- Object
- Array
其中Array里面的内容实际为首页虎扑咨询的前48条内容,应该是JSON文件,是我们想提取的数据。
所以想当然地用selenium里的方法去试试看看
代码如下:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = {'browser': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=d)
# driver = webdriver.PhantomJS()
driver.get('http://hupu.com')
for data in driver.get_log('browser'):
print(data)
结果,很明显是我太天真:
使用get_log方法,得到的信息只有第一部分——即所有mixed content的信息
所以,如何从console里去获取Object和Array的信息?
之前有看到建议说是去找这些数据的源头,找到对应的js方法,看js是怎么获取的,再用python用同样的方法去获取。
但尝试下来并没有眉目,看各位是否能支支招。
答
个人感觉,还是直接去捕获 xhr 数据比较好,他那个控制台显示的内容,估计都是在 xhr 获取后,自行 console.log 出来,让开发人员自行验证用的,其实没什么意义,他直接注释掉 console.log 你就没办法了,而 xhr 还是正常的