您好,登錄后才能下訂單哦!
這篇文章主要講解了“Linux環境下安裝chrome無頭模式抓取網頁源碼的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux環境下安裝chrome無頭模式抓取網頁源碼的方法”吧!
由來: 公司業務方面需要抓取目標網站首頁上的源代碼,進行業務分析,在會議上腦子里就想使用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
下載自己版本對應的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無頭模式抓取網頁源碼的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。