項目選項
項目選項是適用于整個項目的選項。最常用的項目選項與以下三個方面相關:
- 開始的urls
- 連接
- 代理
您可以通過單擊project options工具欄按鈕打開項目選項屏幕。
開始URLs選項 | descriptions |
---|---|
Include start URLs in data output | 在數據輸出中包含開始的url。 |
Wait for partial load only | 如果交互超時已經完成,頁面加載就會被認為是完整的。當一個網頁需要很長時間加載一個外部資源時,這個選項就可以使用了。 |
Single start URL | 用于設計的URL是惟一使用的開始URL。 |
List of start URLs | 靜態url的列表被用作起始url。 |
Feed URLs from input data source | 啟動urls是從輸入數據源讀取的,比如數據庫表或CSV文件。 |
特殊的URL參數開始
添加URL參數 ??Post 指定應該貼在網站上的數據。
添加URL參數 ??Headers 以指定應該發送到網站的附加頭信息。
注意: Post參數必須在頭參數之前出現。每個參數是可選的。
例子:
本例中的URL將向站點post par2=val2&par3=val3
,而 par1=val1
只是一個普通的查詢參數。
http://www.sequentum.com?par1=val1??post=par2=val2&par3=val3??headers=Content-Type: application/x-www-form-urlencoded
代理選項 | Description |
---|---|
Use proxy servers | 該項目將循環使用代理服務器列表,并在檢索web頁面時使用代理服務器。代理服務器可以用來將你的IP地址隱藏在目標網站上。 |
Switch proxy after this number of page loads | 在這個頁面加載之后,Visual Web Ripper 將會切換到下一個代理。您必須配置多個代理,以使Visual Web Ripper 能夠切換代理。 |
瀏覽器選項 | 這些選項只適用于WebBrowser代理。當使用網絡爬蟲或internet explorer代理時,這些選項沒有任何效果。 |
---|---|
Display images | 下載并在處理瀏覽器中顯示所有的圖像。圖像內容仍然被下載,即使這個選項被關閉了。不下載和顯示所有圖像會增加數據提取速度。有些網站在沒有圖片的情況下可能無法正常工作。 |
Run ActiveX & Flash | 在處理瀏覽器中下載并運行所有的Flash和ActiveX對象。不下載和顯示所有的Flash和ActiveX對象會增快數據的提取速度。有些網站在沒有運行ActiveX對象的情況下可能無法正常工作。 |
Ignore cache | 總是將緩存的內容與實時內容進行比較。如果關閉“忽略緩存”和“顯示圖像”,那么已經在緩存中的圖像仍然會顯示出來。 |
Execute scripts | 執行Javascript。沒有執行腳本會增加數據提取速度,但是很多網站在這個選項被關閉的情況下無法正常工作。 |
Load frames | 下載框架與框架集 |
Ignore certificate errors | 允許Visual Web Ripper用無效的SSL證書加載網站。 |
Pass authentication | 自動為web瀏覽器提供身份驗證,而不是打開一個對話框。為了使web瀏覽器代理身份驗證能夠工作,這個選項是必需的。 |
JavaScript選項 | Description |
---|---|
Inject standard JavaScript | 頁面加載前的覆蓋會將標準的Visual Web Ripper的javascript注入到一個頁面中,以便更好的頁面處理。 |
Custom JavaScript overrides | 用于覆蓋的javascript的自定義列表。 |
雜項設置 | Description |
---|---|
Default data collector | 用于數據采集的默認數據收集器。 |
Web crawler worker threads | 在使用web爬蟲采集器時,用于檢索和處理數據的并發線程數量。大量的工作線程可能會在較慢的Internet連接上導致頁面加載超時。 |
Log level | 日志級別越高,記錄的信息就越多。日志文件位于[My Document]\Visual Web Ripper\Log
|
Web crawler cookie | 一個用于web爬蟲采集器的初始cookie。 |
Get current browser cookie | 檢索當前在web瀏覽器中顯示的活動cookie。 |
高級選項 | Advanced Options |
---|---|
Inject JavaScript into all frames | 將JavaScript注入到所有frames中。 |
Refresh after page load | 在瀏覽新網頁后,完全刷新網頁瀏覽器的網頁。 |
Delay after page load (milliseconds) | 在導航到第一個頁面后等待指定的毫秒數。 |
Wait for page load during AJAX | 在執行AJAX操作時等待頁面完全加載。 |
Reduce memory delay | 在嘗試減少瀏覽器內存后的幾秒鐘內延遲。延遲的時間越長,減少內存的機會就越大。 |
Remove Flash | 在處理網頁之前,嘗試從網頁中刪除Flash對象。 |
Load frames | 在網頁上加載所有的frames和iframes(只在瀏覽器模式下)。 |
Hide selection styles | 隱藏Visual Web Ripper在瀏覽器中的選擇樣式。 |
Multi-threaded downloads | 在不同的線程中下載文件和圖像(僅使用WebBrowser模式)。 |
Ignore page load error codes | 加載網頁時,忽略錯誤碼。 |
Save duplicate reference data | 將引用數據保存到磁盤上,這樣Visual Web Ripper就可以檢查項目運行之間的重復數據。 |
Remove duplicate reference data | 刪除用于重復檢查的所有舊引用數據。這將導致在項目運行的下一次時提取完整的數據集。 |
Data row cache | 在將提取的數據寫入磁盤之前,緩存這些輸入數據行并在內存中啟動urls。值為0意味著所有數據都緩存在內存中。 |
Output table name | 這個模板生成的輸出表的名稱(如果有的話)。如果該屬性為空,則使用模板名。 |
Initialization script | 在項目開始之前運行的自定義腳本。 |
Partial page load | 如果交互超時已經過去,頁面加載就會被認為是完整的。當一個網頁需要很長時間加載一個外部資源時,這個選項就可以使用了。 |
Redirect on meta refresh | 當發現一個meta刷新標記時,web瀏覽器將重定向。 |
Link transformation | 轉換開始URL(s)的腳本。 |
Always use default proxy | 一個用于web爬蟲采集器的初始cookie。 |
Load default cookie | 在web爬蟲模式中加載每個開始URL的默認cookie。 |
Allow unsafe header parsing | 支持返回不正確響應頭的網站。 |
Close all dialogs | Visual Web Ripper將嘗試在運行時阻制所有的網站對話框,但是可能會在一些特殊的對話框中失敗。這個選項將一個Windows鉤子注入到所有對話框中,并在對話框中自動按下指定的按鈕。模板選項關閉對話按鈕指定將按下的按鈕列表。默認的按鈕是帶有文本為Ok和Yes。指定的文本不是大小寫敏感的。 |
XPath functions | 可以在選擇xpath中使用的自定義函數列表。 |
模板樣式
Visual Web Ripper有許多不同類型的模板。大多數模板類型在打開模板時執行操作,比如導航到新頁面或提交表單。PageArea模板是不同的,因為它們在當前的網頁中定義了一個區域,但是不執行操作。選擇模板也不執行任何操作。相反,它們會從現有的列表模板中添加或刪除選定的元素。
設計模板最困難的部分是為給定的場景選擇正確的模板選項。例如,如果您正在從一個AJAX站點提取數據,您可能需要使用一些與AJAX操作相關的選項,以確保Visual Web Ripper能夠正確地導航網站。
一些模板選項可以用于所有模板類型,但是其他模板類型只適用于特定的模板類型。
下面的子主題描述了Visual Web Ripper所支持的每種類型的模板。
頁面區域模板(PageArea Templates)
在幾乎所有的Visual Web Ripper 項目中都使用了PageArea模板。它們不執行動作,而是在網頁中定義一個區域。在打開PageArea模板時,選中的區域會變成淡綠色,只有在頁面區域內才可以選擇元素。
一個PageArea模板通常用來定義一個元素列表。例如,如果你在旅游網站上搜索酒店,搜索結果會包含酒店列表。每一家酒店都是搜索結果中的一項,每一家酒店都有一些特定的屬性,比如名字、描述和價格。可以使用PageArea模板來定義搜索結果中的一個條目的區域,并且可以設置列表選項來遍歷所有條目。
一旦打開了PageArea模板,就可以將內容元素添加到模板中。內容元素只能從定義的頁面區域中提取內容。如果PageArea模板是一個列表模板,那么內容元素將自動應用到列表中的所有頁面區域。
所有列表模板都生成一個新的輸出數據表,因此上面的示例的數據輸出將是一個包含數據行的數據表,其中包含提取的內容“Price/night”。
繼續上面的示例,您可能想要導航到酒店的詳細信息頁面,以提取關于上市酒店的詳細信息。這可以通過在導航到酒店詳細信息頁面的PageArea模板中添加一個鏈接子模板來實現。同樣,如果PageArea模板是一個列表模板,那么只需要定義一個單獨的細節鏈接,而 Visual Web Ripper將會自動跟蹤列表中的每個酒店的詳細鏈接。
PageArea選項(PageArea Options)
創建PageArea模板時最常用的選項是與列表模板相關的列表選項和選項。做一個完美的列表選擇是很困難的,所以請閱讀創建列表以獲取更多信息。
以下的選項可用于PageArea模板:
- List options 列表選項
- Misc template options 雜項模板選項
- Xpath options Xpath選項
- Filter options 過濾選項
- Condition options 條件選項
- Duplicate data options 重復數據選項
鏈接模板 Links Template
鏈接模板是最常用的模板。它被用來點擊鏈接并在一個網站上導航。當打開一個鏈接模板時,Visual Web Ripper會點擊一個鏈接,然后導航到一個新的網頁。如果模板是一個列表模板,那么Visual Web Ripper就會遍歷列表中的所有鏈接,從而導航到所有的鏈接。
鏈接模板通常是一個PageArea列表模板的子模板。例如,如果一個PageArea模板迭代一個搜索結果列表,那么可以使用一個鏈接模板導航到每個搜索結果的細節頁面。在這種情況下,鏈接模板不是一個列表模板。然而,由于PageArea模板是一個列表模板,所以Visual Web Ripper 仍然可以導航所有的鏈接。
鏈接選項(Link Options)
在創建鏈接模板時,操作選項是最重要的一組選項。兩個主要的選擇是:
- Full page load
- AJAX or JavaScript
當點擊選擇的鏈接導航到一個新頁面時,會使用完整的頁面加載選項。當單擊鏈接時,應該使用AJAX或JavaScript選項,而不是導航到新頁面,而是動態地在當前頁面上更改內容。
完整頁面加載選項 | Full page load options |
---|---|
Start new web browser | 當Visual Web Ripper在WebBrowser模式下運行時,一個單一的瀏覽器實例被用來瀏覽網站。如果你正在遍歷一長串鏈接,Visual Web Ripper會點擊打開一個新網頁的鏈接,從新網頁中提取數據,然后再回到鏈接列表中,以繼續下一個鏈接。 這可能是一個緩慢的過程,因為Visual Web Ripper需要為列表中的每個鏈接導航兩個網頁:首先它導航鏈接,然后它導航到鏈接列表。 如果你手動導航鏈接列表,你可能會在一個新窗口或一個新的瀏覽器標簽頁打開每個鏈接,以避免每次都回到鏈接列表。如果使用新的Web瀏覽器選項,Visual Web Ripper也可以做同樣的工作。 |
AJAX before full page load | 當導航到一個新網頁時,導航應該立即開始。Visual Web Ripper不需要等待導航開始,而是假設導航失敗了,如果它在幾秒內沒有啟動。有時網站會執行一個JavaScript來顯示“請等待……””消息,這樣的JavaScript可能需要花費幾秒鐘的時間來執行,特別是如果它激活了AJAX調用。在這種情況下,您可以在完全頁面加載選項之前使用AJAX,以確保Visual Web Ripper不會報告頁面加載失敗。 |
Data collector | Visual Web Ripper可以在WebBrowser或web爬蟲模式中提取數據。web爬蟲模式要快得多,但在所有網頁上都不適用,因為它忽略了JavaScript和所有動態內容。 網站通常只在一些網頁上使用動態內容。例如,一個網站可能會在搜索結果頁面上使用JavaScript進行頁面導航,但是一旦你點擊了每個搜索結果的細節鏈接,JavaScript就不再使用了。在這種情況下,您可以在單擊詳細鏈接時切換到web爬蟲模式,從而顯著提高數據提取項目的性能。 請參閱web爬蟲模式以獲得更多關于在web爬蟲模式中提取數據的信息。 |
Link transformation | 鏈接轉換用于在 Visual Web Ripper 打開URL之前轉換鏈接URL。當鏈接調用一個JavaScript然后打開新網頁時,這通常是有用的。由于該鏈接調用了JavaScript,因此無法使用web爬蟲模式,但通??梢哉业届o態URL,并且可以使用鏈接轉換將JavaScript調用轉換為靜態URL。這允許你使用web爬蟲模式打開網頁。 例如,一個鏈接可以激活一個看起來像這樣的JavaScript: openNewWebPage('/products/category/products.aspx?id=3456') 您可以使用鏈接轉換將上面的JavaScript轉換為以下靜態URL: /products/category/products.aspx?id=3456 See [Transformation Scripts]for more information about transformation scripts. |
選擇“Full Page load”選項提供了以下選項:
完整頁面加載選項 | Full page load options |
---|---|
Start new web browser | 當Visual Web Ripper在WebBrowser模式下運行時,一個單一的瀏覽器實例被用來瀏覽網站。如果你正在遍歷一長串鏈接,Visual Web Ripper會點擊打開一個新網頁的鏈接,從新網頁中提取數據,然后再回到鏈接列表中,以繼續下一個鏈接。 這可能是一個緩慢的過程,因為Visual Web Ripper需要為列表中的每個鏈接導航兩個網頁:首先它導航鏈接,然后它導航到鏈接列表。 如果你手動導航鏈接列表,你可能會在一個新窗口或一個新的瀏覽器標簽頁打開每個鏈接,以避免每次都回到鏈接列表。如果使用新的Web瀏覽器選項,Visual Web Ripper也可以做同樣的工作。 |
AJAX before full page load | 當導航到一個新網頁時,導航應該立即開始。Visual Web Ripper不需要等待導航開始,而是假設導航失敗了,如果它在幾秒內沒有啟動。有時網站會執行一個JavaScript來顯示“請等待……””消息,這樣的JavaScript可能需要花費幾秒鐘的時間來執行,特別是如果它激活了AJAX調用。在這種情況下,您可以在完全頁面加載選項之前使用AJAX,以確保Visual Web Ripper不會報告頁面加載失敗。 |
Data collector | Visual Web Ripper可以在WebBrowser或web爬蟲模式中提取數據。web爬蟲模式要快得多,但在所有網頁上都不適用,因為它忽略了JavaScript和所有動態內容。 網站通常只在一些網頁上使用動態內容。例如,一個網站可能會在搜索結果頁面上使用JavaScript進行頁面導航,但是一旦你點擊了每個搜索結果的細節鏈接,JavaScript就不再使用了。在這種情況下,您可以在單擊詳細鏈接時切換到web爬蟲模式,從而顯著提高數據提取項目的性能。 請參閱web爬蟲模式以獲得更多關于在web爬蟲模式中提取數據的信息。 |
Link transformation | 鏈接轉換用于在 Visual Web Ripper 打開URL之前轉換鏈接URL。當鏈接調用一個JavaScript然后打開新網頁時,這通常是有用的。由于該鏈接調用了JavaScript,因此無法使用web爬蟲模式,但通常可以找到靜態URL,并且可以使用鏈接轉換將JavaScript調用轉換為靜態URL。這允許你使用web爬蟲模式打開網頁。 例如,一個鏈接可以激活一個看起來像這樣的JavaScript: openNewWebPage('/products/category/products.aspx?id=3456') 您可以使用鏈接轉換將上面的JavaScript轉換為以下靜態URL: /products/category/products.aspx?id=3456 See [Transformation Scripts]for more information about transformation scripts. |
下面的選項也可以用于鏈接模板:
- Advanced action options
- List options
- Misc template options
- XPath options
- Filter options
- Condition options
- Duplicate data options
LinkArea模板
LinkArea模板類型與標準鏈接模板非常相似,但是它會導航到頁面選擇區域的所有鏈接,而不是一個鏈接。
許多新手用戶使用LinkArea模板來瀏覽一個鏈接列表,因為很容易選擇一個區域,并讓Visual Web Ripper解決剩下的問題。然而,這很少是一個好主意,因為很難控制哪些鏈接是導航的。如果您想要瀏覽一個鏈接列表,您應該幾乎總是使用一個標準鏈接模板,并將其作為一個列表模板。這使您可以更大程度地控制哪些鏈接實際上是被選中的。在少見的情況下,選擇list是不切實際的,您可以使用LinkArea模板。
LinkArea Options
LinkArea模板使用與鏈接模板相同的選項,因此請查看鏈接選項以獲得更多信息。
鏈接區域選項 | Link Area Options |
---|---|
Link start index | LinkArea模板選擇一個鏈接列表。該選項指定第一個鏈接的索引。0的值意味著可視化的Web開膛手將從第一個鏈接開始。 |
Link count | 該選項指定要導航的鏈接的數量。0的值意味著Visual Web Ripper將從開始索引中導航所有的鏈接。 |
LinkArea模板有兩個獨特的選擇:
鏈接區域選項 | Link Area Options |
---|---|
Link start index | LinkArea模板選擇一個鏈接列表。該選項指定第一個鏈接的索引。0的值意味著可視化的Web開膛手將從第一個鏈接開始。 |
Link count | 該選項指定要導航的鏈接的數量。0的值意味著Visual Web Ripper將從開始索引中導航所有的鏈接。 |
The following groups of options can also be used with LinkArea templates:
- Advanced action options
- Misc template options
- Xpath options
- Filter options
- Condition options
- Duplicate data options
FormSubmit 模板
一個FormSubmit模板提交一個web表單來導航到一個新頁面。FormField內容元素可以與FormSubmit模板關聯,以指定輸入值。
FormSubmit模板可用于提交任何web表單,如登錄或搜索表單。可以將多個輸入值提供給表單,然后 Visual Web Ripper提交所有這些輸入值的組合的表單。
FormSubmit模板通常選擇提交類型的輸入HTML元素。Visual Web Ripper點擊輸入元素來提交表單。有時,網站會使用JavaScript提交表單。在這種情況下,提交HTML元素可能是任何HTML元素。如果網站不使用輸入HTML元素作為提交元素,那么Visual Web Ripper可能會識別被選中的HTML元素作為鏈接,你需要將模板類型從鏈接更改為FormSubmit。
FormSubmit模板通常有相關的FormField內容元素。這些內容元素選擇表單輸入元素,并指定表單輸入值。
FormSubmit Options
Visual Web Ripper可以以三種方式提交一種形式:
- Submit button
- Auto submit
- Direct URL
提交表單的標準方式是使用提交按鈕。當模板打開時,FormSubmit模板選擇并單擊submit按鈕。
有時一個網站在下拉菜單中選擇一個值時自動提交表單。在這種情況下,應該將FormSubmit模板設置為Auto submit。自動提交表單提交模板不需要選擇HTML元素,模板也不執行任何操作。模板簡單地用作子模板和子內容元素的容器。如果您使用的是Auto submit FormSubmit模板,那么至少有一個相關的FormField內容元素必須執行一個操作。否則,在打開FormSubmit模板時不會發生任何動作。請參閱FormField內容以獲得更多信息。
有時,表單可以通過簡單地導航一個靜態URL并將表單輸入值作為URL參數來提交。如果您選擇了直接URL選項,則必須輸入完整的URL,其中包括帶有示例值的所有參數。當Visual Web Ripper 提交表單時,它會自動地將樣本值與FormField內容元素的實際輸入值交換。FormField內容元素的名稱必須與直接URL中的參數名稱匹配。雖然很少使用,但是直接URL選項對于提高數據提取性能或者提交表單是非常有用的。
請參閱提交Web表單以獲得關于在表單提交上下載文件的更多信息。
The following groups of options can also be used with FormSubmit templates:
- Misc template options
- XPath options
- Filter options
- Condition options
- Duplicate data options
Web Form Examples
- 提交一個輸入值列表的Web表單
- AJAX級聯下拉菜單
- 提交帶有單選按鈕或復選框列表的Web表單
PageNavigation模板
分頁導航模板用于在頁面導航中遍歷所有頁面。分頁導航模板不能包含內容元素或模板,但只需打開頁面導航的新頁面,就可以打開父模板。
下面的例子展示了一個PageArea列表模板的項目結構。對于列表中的每個頁面區域,它提取一個內容元素,然后移動到一個細節頁面,并提取兩個額外的內容元素。整個PageArea列表模板在頁面導航中重復出現。
PageNavigation Options
頁面導航有四種類型:
- Next Page navigation 下一頁導航
- Single Link navigation 單鏈接導航
- List of Links navigation 列表鏈接導航
- Dynamic List of Links navigation 動態列表鏈接導航
下一頁導航是最常用的導航類型。當頁面上的頁面導航有一個“下一頁”鏈接時,它就會被使用,這個鏈接會把你帶到導航的下一個頁面。pagenavi領航模板應該選擇網頁上的“下一頁”鏈接。下一個頁面的pagenavigaton 導航模板會自動地對選擇應用一個過濾器,因此選擇XPath通常最后看起來是這樣的://A[.= 'next> > ']
。您不需要知道XPath語法來使用該特性,但是這樣的XPath確保了一個很好的、健壯的選擇,它對未來的更改非常寬容。
單個鏈接導航類似于下一個頁面導航,但是它不應用選擇過濾器。盡管很少使用,但是在選擇過濾器自動應用到下一個頁面選擇的情況下,單鏈接pagenavigation導航模板可以很有用。
當沒有“下一頁”鏈接時,鏈接導航列表就會被使用,而只是一個頁面鏈接的列表。鏈接導航模板的列表選擇了導航中的每個鏈接,因此應該是一個列表模板。
一些網站顯示了前10個導航頁面,然后有一個“下一個”鏈接進入下一個10個導航頁面。在這種情況下,您必須使用兩個分頁導航模板。第一個模板必須是一個鏈接pagenavigation導航模板的列表,該模板選擇了前10個導航頁面。第二個模板必須是選擇下一個鏈接的下一個頁面或單個鏈接pagenavigation導航模板。
當沒有“下一頁”鏈接時,鏈接導航的動態列表會被使用,但是當你在導航中向前移動時,列表中的頁面鏈接和列表中的頁碼會動態變化。動態頁面導航的一個很好的例子就是Google搜索。請注意,Google搜索也有一個“下一頁”鏈接。在這種情況下,您應該使用下一個頁面導航,但是鏈接導航的動態列表也會起作用。
The following groups of options can also be used with PageNavigation templates:
- Advanced action options
- Misc template options
- XPath options
- Filter options
- Condition options
- Duplicate data options
Redirect重定向模板
重定向模板簡單地重定向到一個新網頁。如果一個網頁包含一個框架,并且在一個新模板中處理框架內容更加實用,這是很有用的。另外,web爬蟲收集器不支持框架,因此在使用web爬蟲收集器時,需要重定向來處理框架內容。
Redirect Options
重定向模板可以以兩種方式重定向到另一個網頁:
- URL redirect
- Frame
如果您選擇URL重定向選項,您還必須輸入一個固定的URL,模板將始終重定向到那個固定的URL。
如果選擇幀選項,則必須選擇希望模板重定向的框架。模板將在處理的時候從框架中提取URL,并重定向到URL??蚣芸梢允荋TML框架或HTML框架集的框架。
Special URL Parameters
添加URL參數 ??Post 應該被發布在網站上的數據。
添加URL參數 ??Header 以指定應該發送到網站的附加頭信息。
注意:Post參數必須在頭參數之前出現。每個參數是可選的。
例子:
本例中的URL將向站點發送par2=val2&par3=val3
,而par1=val1
只是一個普通的查詢參數。
http://www.sequentum.com?par1=val1??post=par2=val2&par3=val3??headers=Content-Type: application/x-www-form-urlencoded
Selection 模板
選擇模板修改另一個模板的選擇。選擇模板可以從目標列表模板中的選擇中添加或刪除元素。
有時,當你有一個列表模板來選擇一個鏈接列表時,你不會想要遵循一些特定的鏈接,或者你想要添加一些鏈接到網頁的不同區域。選擇模板是從列表模板中添加或刪除鏈接的一種簡單方法。
Selection Options
選擇模板可以用兩種方式修改列表模板:
- Add to a selection 添加一個選擇
- Remove from a selection 移除一個選擇
您必須始終選擇希望修改的目標列表模板。目標列表模板是通過名稱來選擇的。如果您更改目標列表模板的名稱,您還必須更改任何相關的選擇模板。
Back模板
Visual Web Ripper web瀏覽器收集器使用Internet Explorer導航目標站點并提取數據。當Visual Web Ripper導航到一個新網頁時,它有時需要導航回到先前的網頁,以便處理列表模板中的下一個鏈接。
返回(Back)模板指定了Visual Web Ripper 如何回到上一個的模板。如果沒有添加返回模板,則使用默認的返回模板。默認的返回模板使用瀏覽器歷史導航到前一個模板的網頁,但是如果瀏覽器的歷史沒有將Visual Web Ripper 帶回預期的URL,它就會導航到預期的URL。返回模板對不導航到新頁面的模板沒有影響。
web爬蟲收集器每次打開新網頁時都會打開一個新的web爬蟲,所以它不需要回到以前(上一個)的網頁。因此,后退模板對web爬蟲模式沒有影響。
Back Options
一個Back模板有以下獨特的選項:
Back 模板選項 | Back Options |
---|---|
Click link to move back to previous page | Back返回模板將點擊一個鏈接,以導航回到先前的網頁。在一些高度動態的網站上,這是一個非常重要的選擇。您可能有搜索結果,您已經定義了一個模板來導航搜索結果中的細節鏈接。細節網頁可能會有“返回到搜索結果”鏈接,點擊這個鏈接可能是回到搜索結果的唯一方法。有時,當目標網站廣泛使用AJAX時,就會發生這種情況。 |
Move back from skipped template | Visual Web Ripper 即使跳過了一個可選的模板,也可以處理后面的模板。 |
Use browser back history | Visual Web Ripper 使用瀏覽器歷史回到以前的網頁。這類似于在web瀏覽器中手動按下Back按鈕。 |
Must return to previous URL | 此選項通常與使用瀏覽器后退歷史選項一起使用,并強制Visual Web Ripper導航到預期的前一個URL,如果Back模板的其他操作不返回到該URL。 |
Do not move back to previous URL | 通常不需要返回到前面的URL。例如,如果數據提取在一個特定的網頁上結束,那么從網頁中導航是浪費時間。 這個選項非常有用,您不需要添加一個返回模板來指定它。相反,您可以簡單地重新設置導航回通用模板選項。 |
下面的選項也可以用于返回模板:
- Advanced action options 高級操作選項
- Misc template options 雜項模板選項
- Xpath options Xpath選項
- Filter options 過濾選項
RepeatParent 模板
重復父模板用于為列表中的每個鏈接重復當前模板。該模板經常用于具有不同深度的菜單層次結構的網站。例如,網站可能包含一個產品目錄,產品可以放置在任何類別級別,因此可能有一個類別Computers
包含一些產品,但是Computers
類別也可能有更多產品的子類別。
顯示Computers
類別的網頁可能在頂部有一個列表,上面有所有子類別的鏈接,然后是屬于Computers
類別的產品列表。如果所有類別和子類別都使用布局,那么您可以使用相同的模板來處理所有類別頁面。然后您可以使用一個重復的父模板來導航所有的子類別鏈接。
重復父模板是遞歸的,所以只要模板選擇在網頁上找到,Visual Web Ripper就會繼續處理重復的父模板。
重復父模板類似于分頁導航模板,但它們不是相同的。重復父模板不應該用于頁面導航。當一個重復父模板導航到一個新網頁時,它會尋找一組新的子類別鏈接并處理它所找到的所有鏈接。重復父模板不應該用于頁面導航。當一個重復父模板導航到一個新網頁時,它會尋找一組新的子類別鏈接并處理它所找到的所有鏈接。一個pagenavigation導航模板還可以導航到一個新的頁面,并尋找一組新的頁面導航鏈接,但是它會記住它已經訪問過的頁面,所以它不會在導航中一次性處理一個頁面。
Group模板
可以使用group模板來組織內容和模板,從而使項目更容易從邏輯的角度理解。一個組模板不執行操作,它不會影響子元素的選擇XPath。
使用輸入數據源 Using an Input Data Source
當您為一個項目分配一個輸入數據源時,整個項目將為每個輸入數據行運行一次。有時,您可能希望一次運行某個項目的某些部分,以及項目的其他部分用于每個輸入數據行。例如,您可能希望一個項目登錄到一個網站,然后在輸入CSV文件中為每個值提交一個web表單。如果您將輸入文件分配給項目,那么這個項目將會在每個輸入數據行中登錄一次。每次登陸后,網站可能會顯示一個驗證碼(CAPTCHA )的屏幕,如果你登錄網站的次數過多,網站可能會鎖定你。您可以將表單提交模板放在一個組模板中,并將輸入數據源分配給group模板,而不是將輸入數據源分配給項目。該項目只運行一次,但是組模板將為每個輸入數據行運行一次。
您可以在模板選項中使用Advanced選項卡,將輸入數據源分配給一個組模板。
雜項模板選項 Miscellaneous Template Options
雜項模板選項可用于大多數模板類型,并且經常在web抓取項目中使用。
雜項模板選項 | Misc Template Options |
---|---|
Optional template | 如果在網頁上沒有找到所選元素,模板仍會被處理,但不會導航到一個新網頁。 在某些情況下,這是一個很有用的選項,例如當您有一個登錄頁面時,只有您尚未登錄時才會顯示登錄頁面。如果您已經登錄了網站,那么Visual Web Ripper 就會簡單地忽略登錄模板。 另一個場景是一個產品目錄,它具有不同的類別級別。您可以為每個類別級別創建一個鏈接模板,但是使模板可選,以便項目可以根據需要跳過類別級別。 |
Required template | 如果選擇的元素不能在網頁上找到,就中止對模板的處理。當前的數據行從輸出數據中刪除。 |
Extract text | 提取所選元素的內文本值。這通常在鏈接模板中使用,以提取鏈接文本。如果該鏈接包含一個圖像,則將提取圖像的alt文本。 這個選項是一個快捷操作,只能提取所選元素的內部文本。如果您想要提取所選元素的其他屬性,您需要創建一個PageArea模板,它提取您需要的屬性,然后使用一個鏈接子模板導航到下一個頁面。 |
Save template | 將模板中的內容保存到目標數據源。有些模板可能只提取腳本使用的內容,而輸出中可能不需要提取的數據,因此可以重新設置這個選項以排除來自輸出的數據。 重置此選項將不包括模板和所有子模板中的所有內容。如果您想要排除一個特定的模板,但是仍然保存子模板,使用排除(Exclude )模板。 |
Disable template | 忽略了模板。該項目不會處理或保存該模板或任何子模板的內容。 |
Exclude template | 該選項類似于Save template選項,但它不會影響子模板,因此子模板中的內容仍然會保存到輸出中。 |
Wait for element | 如果元素是通過AJAX加載的,則可以使用此選項來等待元素。這是一個使用等待腳本的簡單方法,但它只會等待頁面上的元素出現。如果您需要更多的控制,例如等待一個元素包含一個特定的值,您需要使用一個等待腳本。 |
Element wait condition | 如果一個元素在一個完整的頁面加載后被AJAX加載延遲,那么可以使用等待腳本告訴Visual Web Ripper等待,直到元素完成加載。 |
Navigate back | Visual Web Ripper web瀏覽器收集器使用Internet Explorer導航目標站點并提取數據。當可視的Visual Web Ripper導航到一個新網頁時,它有時需要導航回到先前的網頁,以便處理列表模板中的下一個鏈接。 通常,它不需要返回到以前的URL。例如,如果數據提取在一個特定的網頁上結束,那么從網頁中導航是浪費時間。 |
模板操作 Template Actions
模板可以執行兩種操作:
- Full page load
- JavaScript
完整的頁面加載(Full page load)操作用于導航到一個全新的web頁面,JavaScript操作用于在當前web頁面上觸發JavaScript事件和AJAX請求。
自動檢測適當的動作 Detecting the Appropriate Action Automatically
Visual Web Ripper 通??梢宰詣訖z測到最合適的模板動作。如果您將模板動作設置為自動檢測,Visual Web Ripper將自動配置模板動作。當您第一次在編輯器中打開模板時,將配置模板操作。
Full Page Load Options
選擇完整的頁面加載選項將使您能夠訪問以下操作選項:
整而全加載選項 | Full Page Load Options |
---|---|
Start new web browser (只適用于鏈接Link和FormSubmit模板) |
當Visual Web Ripper在WebBrowser模式下運行時,一個單一的瀏覽器實例將被用于瀏覽網站。如果你正在遍歷一長串鏈接,Visual Web Ripper會點擊一個鏈接打開一個新網頁,從新網頁中提取數據,然后回到鏈接列表,以繼續下一個鏈接。 這可能是一個緩慢的過程,因為Visual Web Ripper需要為列表中的每個鏈接導航兩個網頁。首先,它會導航鏈接,然后它會導航到鏈接列表。 如果您是手動導航鏈接列表,您可能會在新窗口或瀏覽器選項卡中打開每個鏈接,以避免每次都導航到鏈接列表。如果您選擇了Start new web browser選項,那么Visual Web Ripper 也可以做同樣的工作。 |
AJAX before full page load | 當導航到一個新網頁時,導航應該立即開始。Visual Web Ripper 不需要等待導航開始。相反,如果它在幾秒鐘內沒有開始,它就假定導航失敗了。有時網站在導航前會執行一個JavaScript,以顯示“請等待……””消息。這樣的JavaScript可能需要花費幾秒鐘的時間來執行,特別是當JavaScript激活AJAX調用時。在這種情況下,您可以選擇AJAX before full page load,以確保Visual Web Ripper 不會報告頁面加載失敗。 |
Data collector (僅適用于鏈接Link和鏈接區域LinkArea模板) |
Visual Web Ripper 可以在WebBrowser或web爬蟲模式中提取數據。web爬蟲模式要快得多,但它并不適用于所有的web頁面,因為它忽略了JavaScript和所有動態內容。 網站通常只在一些網頁上使用動態內容。例如,一個網站可能會在搜索結果頁面上使用JavaScript進行頁面導航,但是一旦你點擊了每個搜索結果的細節鏈接,JavaScript不再被使用。在這種情況下,您可以在單擊詳細鏈接時切換到web爬蟲模式,從而顯著提高數據提取性能。 請參閱web爬蟲收集器獲取關于在web爬蟲模式中提取數據的更多信息。 |
Link transformation (僅適用于鏈接和鏈接區域模板) |
鏈接轉換用于在Visual Web Ripper打開URL之前轉換鏈接URL。當鏈接調用一個打開新網頁的JavaScript時,這通常是有用的。因為鏈接調用了JavaScript,所以不能使用web爬蟲模式。但是,您通常可以確定靜態URL是什么,并使用鏈接轉換將JavaScript調用轉換為靜態URL,這允許您使用web爬蟲模式打開網頁。 例如,一個鏈接可以激活一個看起來像這樣的JavaScript: openNewWebPage('/products/category/products.aspx?id=3456') 您可以使用鏈接轉換將上面的JavaScript轉換為以下靜態URL: /products/category/products.aspx?id=3456 有關轉換腳本的更多信息,請參閱轉換腳本。 |
JavaScript Options
有三種不同類型的JavaScript操作。
- 異步(Asynchronous) 所有JavaScript都是在默認情況下同步執行的,但是JavaScript可以在給定的超時后使用函數setTimeout來執行JavaScript代碼,JavaScript函數或事件可能會在所有相關的JavaScript代碼執行之前返回。Visual Web Ripper 不能自動等待異步JavaScript的執行,所以您需要做額外的配置來幫助可視化的Visual Web Ripper 確定何時完成了JavaScript的執行。
- 同步(Synchronous)。在所有JavaScript代碼執行之前,同步JavaScript不會返回,因此Visual Web Ripper可以自動等待同步JavaScript執行。
- AJAX。AJAX是一種特殊的異步JavaScript形式。Visual Web Ripper 通常可以鉤住AJAX請求,因此自動決定何時完成異步AJAX請求。Visual Web Ripper 不會總是能夠鉤住AJAX請求,在這種情況下應該使用異步JavaScript。
選擇異步Asynchronous JavaScript選項可以讓您訪問以下操作選項:
異步JS選項 | Asynchronous JavaScript Options |
---|---|
Wait for element | Visual Web Ripper當異步JavaScript完成時,除了在網頁上尋找更改外,無法檢測到。Visual Web Ripper將繼續等待異步JavaScript,直到選定的等待元素的內容發生變化。 |
Script wait condition | Visual Web Ripper 在等待異步JavaScript完成時,需要執行一個默認的步驟列表。默認的步驟適用于許多場景,但有時您需要添加一個等待腳本,以便告訴Visual Web Ripper何時停止等待異步JavaScript完成。 |
Advanced Options
下面的高級操作選項很少使用,但是可能需要從一些網站提取數據:
高級選項 | Advanced Action Options |
---|---|
Partial page load (僅適用于頁面加載操作) |
當一個網頁載入時,它會經過以下三個狀態: 1.Loading 加載中 2.Interactive 交互 3.Completed 完成 當一個網頁加載時,它是不可訪問的。Visual Web Ripper 總是要等待這個狀態的通過。當一個網頁是交互式的,網頁的一些部分已經加載,但是其他的部分,比如圖片,仍然在加載。網頁可以在交互模式下訪問,但是Visual Web Ripper 可能無法訪問網頁上所有的元素。當一個網頁完成時,它已經完全載入了網頁的所有元素(除了加載AJAX的動態內容之外)。 有時網站可能會加載外部內容,比如廣告圖片。外部內容的加載速度非常慢,這可能會顯著降低數據提取的性能。您可以使用部分頁面加載選項告訴Visual Web Ripper ,當頁面進入交互模式時,它可以開始處理一個網頁。Visual Web Ripper 在開始處理網頁之前,會在交互模式下等待一個特定的時間間隔。時間間隔設置在項目選項的Connection選項卡中。 有時,您可能希望部分頁面加載適用于項目中的所有操作,而不僅僅是一個特定的模板操作。您可以在項目選項的Connection選項卡中為整個項目設置部分頁面加載選項。 |
Click to get new URL (僅適用于頁面加載操作) |
當您從 WebBrowser切換到 WebCrawler收集器或使用新的web瀏覽器選項時,Visual Web Ripper試圖從所選的鏈接元素中提取URL,然后在WebCrawler模式或新的WebBrowser中導航到這個URL。 有時,選中的link元素使用JavaScript導航到新頁面。在這種情況下,Visual Web Ripper 將無法從link元素中提取出一個靜態URL。 你可以使用點擊獲取新的URL來告訴Visual Web Ripper,它應該點擊鏈接來獲取URL。Visual Web Ripper會點擊鏈接并開始導航,但是一旦它知道瀏覽器的導航位置,它就會停止導航并提取URL。 |
AJAX in page areas (僅適用于JavaScript操作) |
PageArea模板限制元素選擇到一個網頁的特定區域。如果一個PageArea模板有一個鏈接子模板,并且這個子模板被打開,頁面區域就不再有任何效果,因為Visual Web Ripper 已經導航到一個新的網頁,頁面區域不再存在。 如果鏈接子模板有AJAX或JavaScript操作,那么Visual Web Ripper 不會導航到新網頁,而是可以將動態內容加載到相同的網頁上。因此,頁面區域可能在AJAX或JavaScript操作之后仍然存在,您可以在頁面區域選項中使用AJAX,指定頁面區域在AJAX或JavaScript操作之后仍然可用。 |
Form submit links (僅適用于web爬蟲模式的全頁面加載操作) |
當Visual Web Ripper 在WebBrowser模式中打開一個鏈接模板時,它會點擊所選的鏈接來導航到一個新的網頁。因為Visual Web Ripper 點擊了鏈接,它仍然會導航到新網頁,不管它是一個真正的鏈接還是一個表單按鈕。 在web爬蟲模式中,Visual Web Ripper總是提取一個鏈接的URL屬性并導航到那個URL。如果選中的link元素是一個表單按鈕,那么Web爬行器就無法導航,因為表單按鈕沒有URL屬性。表單提交鏈接選項可用于告訴Visual Web Ripper,鏈接元素實際上是一個表單按鈕,它應該嘗試提交表單以導航到新網頁。 |
Action events | 默認的模板操作總是在選中的元素上觸發一個單擊事件。有時,您可能需要觸發其他事件來執行所需的操作。例如,AJAX操作可能需要在HTML元素上懸停,以便激活一個動態彈出窗口并從中提取數據。在這種情況下,您可以添加onMouseOver事件,導致Visual Web Ripper 觸發事件而不是單擊事件。 Visual Web Ripper支持三種非常規事件。domclick事件會觸發click事件,并對所選元素執行缺省操作。domscroll事件滾動到選中元素的右下角。窗口滾動(windowscroll)事件將選中的元素的窗口滾動到右下角。 |
Redirect on meta refresh (僅適用于頁面加載操作) |
一些網頁在短時間間隔內刷新或重定向。如果一個元刷新的HTML標簽被識別,Visual Web Ripper 就會立即重定向,但是如果你想讓Visual Web Ripper 留在網頁而不重定向的話,你可以使用這個選項。 |
Visit each page only once (僅適用于頁面加載操作) |
鏈接列表模板遵循所有選擇的鏈接,甚至是重復鏈接。您可以使用這個選項告訴Visual Web Ripper,它不應該導航已經導航的鏈接。 Visual Web Ripper只看鏈接元素的靜態URL。許多網站使用會話(sessions)或post變量來生成具有相同URL的不同版本的網頁,所以你應該小心使用這個選項。否則,當您希望從更多的web頁面中提取數據時,您可能會從一個單獨的頁面中提取數據。 |
Click on exact element | 如果一個鏈接模板選擇了一個不是鏈接元素的HTML元素,那么Visual Web Ripper 就會尋找鏈接元素的子元素。如果它找到了一個鏈接元素,它就會單擊這個元素而不是選中的元素。 有些網站使用JavaScript將click事件綁定到通常不是鏈接元素的HTML元素上。您可以使用Click onexact element 選項來告訴Visual Web Ripper ,它應該點擊所選元素,而不是尋找子鏈接元素。 |
Delay after action | 一些網站如果發現你在一個網站上瀏覽得太快,就會失敗或屏蔽你。您可以使用延遲之后的動作選項,在模板操作之后設置一個固定的延遲。 如果您想將此選項應用到整個項目中的所有操作,那么在項目選項的Connection選項卡中使用Page load delay選項。 |
Is block popup (僅適用于完全頁面加載操作) Restart browser session (僅適用于完全頁面加載操作) |
有時,網站可能會生成一個彈出窗口作為頁面加載事件的一部分。Visual Web Ripper 會自動導航到這個彈出窗口的URL。例如,如果彈出窗口是一個對您不感興趣的廣告,那么使用這個選項來阻止彈出窗口。 此選項可用于在操作之前模擬web瀏覽器重新啟動。 |
Repeated AJAX calls(僅適用于AJAX操作) | 果您想要重復AJAX操作,只要動作結果在AJAX回調中,就可以使用該選項。這個選項可以與操作窗口滾動或domscroll一起使用,當窗口或web元素被滾動時動態加載的內容。 |
Wait element change optional (僅適用于JS操作) |
有時, Visual Web Ripper 不應該等待異步JavaScript對等待元素進行更改,但應該等待直到頁面上的等待元素出現。 |
Wait element change optional on first action (僅適用于JS操作) |
當你想要Visual Web Ripper 等待一個等待的元素時,使用這個選項,除非點擊列表中的第一個鏈接。 例如,您可能正在從一個圖像庫中提取圖像,并有一個鏈接列表,這些鏈接使用AJAX將不同的圖像加載到庫中。當網頁第一次加載時,圖片庫中的第一個圖像可能是預先加載的,因此在點擊第一個圖像鏈接后等待圖像改變會失敗。 |