1. 程式人生 > >爬蟲的自我解剖(抓取網頁HtmlUnit)

爬蟲的自我解剖(抓取網頁HtmlUnit)

網路爬蟲第一個要面臨的問題,就是如何抓取網頁,抓取其實很容易,沒你想的那麼複雜,一個開源HtmlUnit包,4行程式碼就OK啦,例子如下:

1 2 3 4 final WebClient webClient=new WebClient(); final HtmlPage page=webClient.getPage(); System.out.println(page.asText()); webClient.closeAllWindows();

在程式中寫上上面的4行程式碼,執行,就可以得到煙雨林部落格首頁的全部內容,上面程式碼在執行的過程中會出現很多警告,出現這些警告的主要原因是由於以下兩點:

1、HtmlUnitJavascript的支援不是很好

2、HtmlUnitCSS的支援不是很好

明白了上面的兩點後,將程式碼重新改寫一下,該禁用的就禁用,同時禁用一些不必要的功能,也有利於提高程式的執行效率,再者說網路爬蟲也不需要CSS的支援滴

1 2 3 4 5 6 final WebClient webClient=new WebClient(); webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(false); final
 HtmlPage page=webClient.getPage(); System.out.println(page.asText()); webClient.closeAllWindows();

HtmlUnit的使用: 簡介:HtmlUnit說白了就是一個瀏覽器,這個瀏覽器是用Java寫的無介面的瀏覽器,正因為其沒有介面,因此執行的速度還是可以滴,HtmlUnit提供了一系列的API,這些API可以乾的功能比較多,如表單的填充,表單的提交,模仿點選連結,由於內建了Rhinojs引擎,因此可以執行Javascript

作用:web的自動化測試(最初的目的),瀏覽器,網路爬蟲

重要API的使用 在介紹API的使用之前要先明白的一個問題是,WebClient,WebWindow,Page三者之間的關係,所有的頁面最終都是在一個WebWindow物件裡面,WebClient在建立時會自動的建立一個WebWindow物件,當呼叫getPage時會將新頁面載入到WebWindow裡,你可以理解成WebClient就是IE核心,WebWindow就是呈現頁面的瀏覽器視窗,三者之間的關係圖如下圖所示:

1、模擬特定瀏覽器,也可以指定瀏覽器的相應版本(HtmlUnit最新版2.13現在可以模擬的瀏覽器有Chrome/FireFox/IE)

1 2 //模擬chorme瀏覽器,其他瀏覽器請修改BrowserVersion.後面 WebClient  webClient=new WebClient(BrowserVersion.CHROME);

2、查詢特定元素,通過get或者XPath可以從HtmlPage中獲得特定的Html元素,如下例子

方法一,通過get方法獲取

1 2 3 //從[煙雨林部落格]上獲取標籤hed的內容 HtmlDivision div=(HtmlDivision)page.getElementById("hed");

方法二,通過XPath獲取,XPath通常用於無法通過Id搜尋,或者需要更為複雜的搜尋時,XPath的相關教程

1 2 3 4 //同樣可以打印出hed的內容,//div中//表示搜尋整個文件中的div,並將這些div //放入list中,然後獲取第一個div final HtmlDivision div = (HtmlDivision) page.getByXPath("//div").get(0); System.out.println(div.asXml());

3、代理伺服器的配置,代理的配置很簡單,只需要配置好地址,埠,使用者名稱與密碼即可

1 2 3 final WebClient webClient = new WebClient(BrowserVersion.CHROME,,8087); final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider(); credentialsProvider.addCredentials("username","password");

4、模擬表單的提交

1 2 3 4 5 6 7 8 9 //獲取表單  final HtmlForm form = page.getFormByName("form"); //獲取提交按扭 final HtmlSubmitInput button = form.getInputByName("submit"); //一會得輸入的 final HtmlTextInput textField = form.getInputByName("userid"); textField.setValueAttribute("test"); //點選提交表單

相關推薦

爬蟲自我解剖(網頁HtmlUnit)

網路爬蟲第一個要面臨的問題,就是如何抓取網頁,抓取其實很容易,沒你想的那麼複雜,一個開源HtmlUnit包,4行程式碼就OK啦,例子如下: 1 2 3 4 final WebClient webClient=new WebClient(); f

Python爬蟲學習,網頁上的天氣資訊

今天學習了使用python編寫爬蟲程式,從中國天氣網爬取杭州的天氣。使用到了urllib庫和bs4。bs4提供了專門針對html的解析功能,比用RE方便許多。 # coding : UTF-8 import sys reload(sys) sys.setdef

【php網頁爬蟲】php網頁資料

外掛介紹: PHP Simple HTML DOM解析類:Simple HTML DOM parser 幫我們很好地解決了使用 php html 解析 問題。可以通過這個php類來解析html文件,對其中的html元素進行操作 (PHP5+以上版本)。 使用方法: 1

JAVA使用Gecco爬蟲 網頁內容

log pro 指定 get www. error 一個 log4j java類 JAVA 爬蟲工具有挺多的,但是Gecco是一個挺輕量方便的工具。 先上項目結構圖。 這是一個 JAVASE的 MAVEN 項目,要添加包依賴,其他就四個文件。log4j.propertie

爬蟲網頁來下載小說

程序 rip compile pla ons pos 獲取 except res 利用Python3 編寫爬蟲,從筆趣閣抓個小說下載。 import re import urllib.request import time import easygui as g # 輸

python爬蟲-- 網頁、圖片、文章

零基礎入門Python,給自己找了一個任務,做網站文章的爬蟲小專案,因為實戰是學程式碼的最快方式。所以從今天起開始寫Python實戰入門系列教程,也建議大家學Python時一定要多寫多練。 目標 1,學習Python爬蟲 2,爬取新聞網站新聞列表 3,爬取圖片 4,把爬取到的資料存在本地

python 爬蟲 如何用selenium網頁內容

使用selenium爬取動態網頁資訊 Python selenium自動控制瀏覽器對網頁的資料進行抓取,其中包含按鈕點選、跳轉頁面、搜尋框的輸入、頁面的價值資料儲存、mongodb自動id標識等等等。 首先介紹一下 Python selenium —自動化測試工

[Python]網路爬蟲(一):網頁的含義和URL基本構成

一、網路爬蟲的定義 網路爬蟲,即Web Spider,是一個很形象的名字。 把網際網路比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。 網路蜘蛛是通過網頁的連結地址來尋找網頁的。 從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它連結地址

[Python]網路爬蟲(二):利用urllib2通過指定的URL網頁內容

版本號:Python2.7.5,Python3改動較大,各位另尋教程。 所謂網頁抓取,就是把URL地址中指定的網路資源從網路流中讀取出來,儲存到本地。  類似於使用程式模擬IE瀏覽器的功能,把URL作為HTTP請求的內容傳送到伺服器端, 然後讀取伺服器端的響應資源。 在

Pyhon網路爬蟲學習筆記—本地網頁(一)

如何用Python爬取本地網頁   一、寫出一個簡單的靜態網頁,下面是我隨便寫的一個 網頁原始碼如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT

python爬蟲非同步載入網頁資訊(python網頁中無法通過網頁標籤屬性的內容)

1.問題描述 最近由於學習內容的要求,需要從網頁上抓取一些資料來做分析報告,在看了python爬蟲的一些基礎知識之後就直接上手去網站上爬資料了。作為新手踩坑是無法避免,最近就遇到了一個比較難的問題: 一般情況下,要抓去網頁上某個標籤上的內容,在通過urllib下

網路爬蟲中FiddlerPC端網頁資料包與手機端APP資料包

1 引言   在編寫網路爬蟲時,第一步(也是極為關鍵一步)就是對網路的請求(request)和回覆(response)進行分析,尋找其中的規律,然後才能通過網路爬蟲進行模擬。瀏覽器大多也自帶有除錯工具可以進行抓包分析,但是瀏覽器自帶的工具比較輕量,複雜的抓包並不支援。且有時候需要編寫手機APP爬

爬蟲有多好玩?所見即所爬!網頁、圖片、文章!無所不爬!

  一,首先看看Python是如何簡單的爬取網頁的 1,準備工作 專案用的BeautifulSoup4和chardet模組屬於三方擴充套件包,如果沒有請自行pip安裝,我是用pycharm來做的安裝,下面簡單講下用pycharm安裝chardet和BeautifulSou

java演算法-網路爬蟲網頁並儲存

從一個URL中讀取網頁,如果是同一個網站的就儲存,URL裡面包含URL列表,繼續抓取,抓完全部 使用多執行緒 A執行緒讀取URL內容 B執行緒存檔案 C執行緒解析URL 發現新URL從A執行緒讀取完的內容可以放到一個佇列裡面,B執行緒來讀取,C執行緒解析URL  問題,如果這個佇列

Python3爬蟲(一)網頁的html

因為程式碼只有幾行,所以可以先貼程式碼: import urllib.request url = r'http://douban.com' res = urllib.request.urlopen(url) html = res.read().decode('utf-

Java實現網路爬蟲001-網頁

package com.okayisoft.okayspider.demo; import org.apache.commons.httpclient.HttpClient; import org.

[Python]網路爬蟲(二):利用urllib通過指定的URL網頁內容

1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=F

java爬蟲(使用jsoup設定代理,網頁內容)

jsoup 簡介 jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來

爬蟲】Scrapy爬蟲框架教程-- AJAX非同步載入網頁

前一段時間工作太忙一直沒有時間繼續更新這個教程,最近離職了趁著這段時間充裕趕緊多寫點東西。之前我們已經簡單瞭解了對普通網頁的抓取,今天我就給大家講一講怎麼去抓取採用Ajax非同步加的網站。 工具和環境 語言:python 2.7 IDE: Pycharm 瀏覽器:Ch

java網頁 --- 網路爬蟲

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------