Linux环境下安装chrome无头模式抓取网页源码的方法

这篇文章主要讲解了“Linux环境下安装chrome无头模式抓取网页源码的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux环境下安装chrome无头模式抓取网页源码的方法”吧!

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、做网站、雨花台网络推广、成都小程序开发、雨花台网络营销、雨花台企业策划、雨花台品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供雨花台建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

由来:公司业务方面需要抓取目标网站首页上的源代码,进行业务分析,在会议上脑子里就想使用Jsoup直接抓取就好了, 简单得很 , 等到会后 ,实际情况挺复杂的

有些网站是使用js生成的,有些网站还具备反爬功能, 判断你是否使用浏览器访问, 如果不是浏览器那么就直接给一个警告的js代码, (由于行业原因, 不放出目标网站和抓到的js代码)

所以, 就只能依靠真的浏览器,真的去访问一下目标网站,获取页面源码, 此法借鉴于测试界的selenium和linux版的chrome无头模式, 下面开始:

0.参考资料来自简书 :https://www.jianshu.com/p/b2609ed57f07 在这里感谢作者提供这么好的教程和思路

1.进入linux 先执行命令: 

yum install libX11 libXcursor libXdamage libXext libXcomposite libXi libXrandr gtk3 libappindicator-gtk3 xdg-utils libXScrnSaver liberation-fonts

2.下载chrome

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

3.安装chrome

rpm -ivh google-chrome-stable_current_x86_64.rpm

这个时候,可能有的环境下就报错, 类似于

warning: google-chrome-stable_current_x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY
error: Failed dependencies:
	/usr/bin/lsb_release is needed by google-chrome-stable-75.0.3770.100-1.x86_64

我找到的解决方式是这样安装chrome, 就可以安装成功了

yum localinstall google-chrome-stable_current_x86_64.rpm

4. 查看一下安装的chrome是什么版本的, 需要下载对应的chromedriver

[root@a80f552643f3 ~]# google-chrome --version
Google Chrome 75.0.3770.100

看到版本号, 这样就可以找对应的chromedriver 去这里找: http://chromedriver.chromium.org/downloads

Linux环境下安装chrome无头模式抓取网页源码的方法

下载自己版本对应的chromedriver , 然后传到自己的linux上,位置随意(不过这里在代码中有体现, 下面会提到)

chromedriver应该是个zip, 需要解开, 里面有个chromedriver名字的文件, 设置一下权限(我这里给出了777的权限)

chmod 777 chromedriver

5.来到代码编辑器里(idea, springboot,其他语言自行查找对应的代码设置)

设置一下pom.xml 在 <dependencies> 标签中增加入下内容

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-support</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.12.1</version>
        </dependency>

写一个controller , 然后提供一个如下方法 , 注意看注释, 注释很重要

    @GetMapping("info")
    public String info(@RequestParam String  url){
        // 这里就是设置chromedriver的地址
        String driverPath = "/root/chromedriver";
        // 将这个地址设置到系统变量参数中
        System.setProperty("webdriver.chrome.driver", driverPath);
        // 如果没有url参数,就默认取一个页面的源码
        if (Objects.isNull(url)) {
            url = "https://www.jianshu.com/p/b2609ed57f07";
        }
        // 开始设置chrome
        ChromeOptions chromeOptions=new ChromeOptions();
        // 必须设置 chrome 的无头模式 , 否则linux命令行模式启动报错
        chromeOptions.setHeadless(Boolean.TRUE);
        // 必须设置不使用沙箱, 也是防止 DevToolsActivePort file doesn't exist
        chromeOptions.addArguments("--no-sandbox");
        // 防止 DevToolsActivePort file doesn't exist
        chromeOptions.addArguments("--disable-dev-shm-usage");
        // 不加载图片, 提升速度
        chromeOptions.addArguments("blink-settings=imagesEnabled=false");
        // 设置 ua
        chromeOptions.addArguments("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36");
        ChromeDriver chromeDriver = new ChromeDriver(chromeOptions);
        chromeDriver.get(url);
        // 获得页面源码
        String pageSource = chromeDriver.getPageSource();
        return pageSource;
    }

打包上传到Linux服务器, 可以作为外部调用的一个接口, 返回目标地址的页面源码

感谢各位的阅读,以上就是“Linux环境下安装chrome无头模式抓取网页源码的方法”的内容了,经过本文的学习后,相信大家对Linux环境下安装chrome无头模式抓取网页源码的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!

网站栏目:Linux环境下安装chrome无头模式抓取网页源码的方法
本文网址:https://www.cdcxhl.com/article6/gcohig.html

成都网站建设公司_创新互联,为您提供定制网站关键词优化微信小程序建站公司品牌网站设计动态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站