关于selenium+python爬取ajax的数据有很多文章已经说明。大多是利用设置代理直接截取数据。这样的方式配置起来异常繁琐，而且不能与页面已爬取其它数据整合统一处理。先记录一下场景：采集的目标页面，不仅采取ajax请求，还对页面关键数据进行了js加密。即便是采用设置代理方式抓取数据爬取到json数据，也是加密的数据，也需要对页面js进行解密。本人对js加密了解不深，所以没有再深入。于是就想到等目标页面元素加载执行完毕后，直接python创建ajax请求转发数据。经过测试发现selenium 不执行注入的ajax的代码块。最后解决方案：向页面注入创建新元素的代码，并将需要的数据进行编码设置为新元素的value,执行完毕后通过获取元素值提取出来。js_str = "var vinput = document.createElement('input');vinput.setAttribute('type','text');vinput.setAttribute('name','vinput');vinput.setAttribute('value',JSON.stringify(lists));document.body.appendChild(vinput);" try: driver.execute_script(js_str) except Exception as e: print(e) val = driver.find_element_by_name('vinput').get_attribute('value')
1.安装相应的编译工具在root用户下,全部复制粘贴过去,一次性安装即可.yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install -y libffi-devel zlib1g-dev yum install zlib* -y2.下载安装包wget wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz3.解压tar -xvJf Python-3.7.2.tar.xz4.创建编译安装目录mkdir /usr/local/python35.安装cd Python-3.7.2 ./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl make && make install6.创建软链接ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip37.验证是否成功python3 -V pip3 -V