phantomjs是一个没有界面的浏览器,支持各种web标准,提供DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG,对于爬取一些经过js渲染的页面非常有用。
但是phantomjs默认的user-agent一般都被那些防采集的网站屏蔽了,鬼都知道用这个浏览器,都是来爬取网页的,不是正常的用户。
phantomjs相当于一个真实的浏览器,一个浏览器该加载的该渲染的它都加载都渲染,只是没有界面而已。所以爬取网页的速度很慢。如果可以不加载图片,网页加载速度就会快不少。
下面的这段完整代码,提供了上述的两个功能,具体的请看注释
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities dcap = dict(DesiredCapabilities.PHANTOMJS) dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0") #设置user-agent请求头 dcap["phantomjs.page.settings.loadImages"] = False #禁止加载图片 driver = webdriver.PhantomJS(desired_capabilities=dcap) driver.set_page_load_timeout(40) #设置页面最长加载时间为40s try: driver.get("http://junyiseo.com/") except: pass driver.get_screenshot_as_file('01.png') #保存网页截图 driver.quit() #退出浏览器
xiaodiaomao
2017年12月24日 at 下午9:22非常好 感谢了 终于解决了我的问题