遇到动态网页,通过ajax加载,无法通过源码分析,可以产用自动化测试工具来实现预先加载
#预先装浏览器驱动
from selenium import webdriver
browser = webdriver.Chrome(executable_path = '驱动本地地址') # 用的chrome驱动
browser.get('http://www.baidu.com') #请求网站地址
print browser.page_source #打印加载后源码
browser.quit() #关闭浏览器
我们在取节点的时候,不需要用selenium的内置函数,用scrapy即可(模拟点击输入需要用函数):
#接上面的代码
from scrapy.selector import Selector
se = Selector(text = browser.page_source)
se.css() #即可分析
phantomjs在多进程的情况下,性能下降很严重,win环境下,chrome速度最快
无界面chrome
from selenium import webdriver
from pyvirtualdisplay import Display
dis = Display(visible=0, size=(800, 600))
dis.start()
browser = webdriver.Chrome()
browser.get(url)