我在爬取页面的时候发现有很多数据是js渲染进去的,通过:
String htm = page.getHtml().xpath("*/html/html()").toString();
page.putField("html",htm);
就可以看到爬取下来的页面数据,可以很清晰的看出页面里面有没有自己想要的数据,如果没有,那么我们就需要进一步操作!
如果数据是ajax请求过来的,那么可以参考webmagic开发者的ajax爬取方法。我想爬取的页面数据是直接js渲染的,使用了
PhantomJ渲染之后爬取。
简单来说,PhantomJ就是一个网页浏览器。
当然我们也可以直接用谷歌浏览器代替PhantomJ,但会爬取很慢。
一:先讲一下谷歌浏览器怎么渲染爬取
用谷歌浏览器必须先下载一个谷歌的浏览器驱动,下载地址:http://chromedriver.storage.googleapis.com/index.html
要注意驱动对应谷歌版本:https://blog.csdn.net/llbacyal/article/details/78563992
demo:
package spider; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriverService; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import java.io.File; import java.io.IOException; /** * chromeDriver是谷歌的浏览器驱动,用来适配Selenium,有图形页面存在,在调试爬虫下载运行的功能的时候会相对方便 * @author zhuangj * @date 2017/11/14 */ public class |