金 林,李 研,陳晉泰
(中南財(cái)經(jīng)政法大學(xué) 統(tǒng)計(jì)與數(shù)學(xué)學(xué)院,武漢430073)
當(dāng)前在統(tǒng)計(jì)學(xué)和大數(shù)據(jù)領(lǐng)域流行的R軟件具備強(qiáng)大獲取數(shù)據(jù)的能力,而且表現(xiàn)出高效性、方便性和針對(duì)性等特點(diǎn)。R中擁有大量與網(wǎng)絡(luò)數(shù)據(jù)收集相關(guān)的包,通過(guò)調(diào)用電腦系統(tǒng)的組件,可以完成各種數(shù)據(jù)搜集的工作,十分高效。從方便性的角度說(shuō),搜集到的數(shù)據(jù)還可以直接在R的平臺(tái)上處理,簡(jiǎn)化了整個(gè)數(shù)據(jù)分析工作流程;同時(shí),R還善于處理數(shù)據(jù)的存儲(chǔ),RMySQL和RHadoop等包可以與MySQL、Hadoop等數(shù)據(jù)庫(kù)進(jìn)行交互,為大規(guī)模數(shù)據(jù)存儲(chǔ)和提取提供了條件;與當(dāng)下一些流行的菜單式操作的爬蟲(chóng)軟件相比,R的數(shù)據(jù)搜集工作更具有針對(duì)性,旨在搜集特定網(wǎng)站的特定數(shù)據(jù),而并非像有些爬蟲(chóng)在網(wǎng)頁(yè)中跳躍,跟蹤網(wǎng)絡(luò)足跡等,這樣一來(lái)收集到的數(shù)據(jù)就可以更好地為后面的統(tǒng)計(jì)分析服務(wù)。
使用R進(jìn)行數(shù)據(jù)的自動(dòng)化搜集,主要涉及兩個(gè)方面的工作:一是如何在不同情況下,從網(wǎng)絡(luò)服務(wù)器中檢索到所要的資源,這個(gè)工作涉及到的關(guān)鍵技術(shù)是HTTP協(xié)議的相關(guān)知識(shí);二是如何從已經(jīng)得到的資源中提取信息,大部分表現(xiàn)為對(duì)網(wǎng)絡(luò)文檔的操作。但是,不論抓取的信息有多么復(fù)雜,抓取的流程都離不開(kāi)以下基本步驟:
(1)資源識(shí)別
資源識(shí)別是決定搜集策略的前提。資源識(shí)別需要做以下幾個(gè)工作:確定目標(biāo)數(shù)據(jù)所在網(wǎng)頁(yè)及形式——是通過(guò)API獲取還是通過(guò)URL訪問(wèn)網(wǎng)頁(yè)獲取;若是后者,其具體的URL(網(wǎng)頁(yè)地址)是什么,存在于單個(gè)網(wǎng)頁(yè)還是需要翻頁(yè);如需翻頁(yè),是否改變URL,抑或只能通過(guò)JavaScript控制翻頁(yè)。而若是利用API獲取的方法,API接口是免費(fèi)開(kāi)源的還是需要OAuth授權(quán)的。
當(dāng)成功登陸網(wǎng)站之后,目標(biāo)數(shù)據(jù)是否以存在于現(xiàn)成的下載鏈接中?若其他情形,要視其數(shù)據(jù)存在于表格、列表中?是否需要通過(guò)表單的提交來(lái)獲取數(shù)據(jù)?
當(dāng)這些都確定了之后,還需要判斷的是,是否目標(biāo)信息在某個(gè)網(wǎng)絡(luò)文檔的節(jié)點(diǎn)中?還是在某個(gè)節(jié)點(diǎn)中的某個(gè)屬性里?甚至僅僅是某個(gè)節(jié)點(diǎn)或者某個(gè)屬性的一部分?
除此之外,還有一些細(xì)節(jié)的信息,例如網(wǎng)站數(shù)據(jù)的編碼形式。這些細(xì)節(jié)則貫穿于每一個(gè)步驟中,需要數(shù)據(jù)搜集者留意。當(dāng)了解了這些信息以后,資源識(shí)別才算基本完成。
(2)策略選擇
資源識(shí)別之后,需要根據(jù)資源識(shí)別結(jié)果選擇數(shù)據(jù)搜集的方法。一般而言,這些方法離不開(kāi)一些網(wǎng)絡(luò)相關(guān)工具的基礎(chǔ)知識(shí):例如HTTP和FTP協(xié)議的訪問(wèn)知識(shí),HTML網(wǎng)頁(yè)的結(jié)構(gòu)、XML文檔結(jié)構(gòu)、JSON文檔結(jié)構(gòu)的基本知識(shí)以及處理方式;當(dāng)目標(biāo)信息值在于某個(gè)節(jié)點(diǎn)、節(jié)點(diǎn)屬性、甚至是節(jié)點(diǎn)屬性的一部分中,還需要掌握XPath,正則表達(dá)式等提取工具的相關(guān)知識(shí)。
(3)信息抓取
當(dāng)確定了策略,并確定使用R進(jìn)行數(shù)據(jù)搜集,還需掌握R語(yǔ)言基礎(chǔ),R的XML,RCurl,RSelenium,httr,rvest等軟件包,以及其中的函數(shù)。每一個(gè)函數(shù)都有對(duì)應(yīng)的功能,注意其中的參數(shù)細(xì)節(jié)會(huì)左右抓取最終結(jié)果。
(4)通用化設(shè)計(jì)
通用化設(shè)計(jì)是一個(gè)比較高的層次。數(shù)據(jù)信息往往分散在不同頁(yè)面或者同一頁(yè)面的某幾處,如何抓住其特征來(lái)制定可通用的搜集方式,需要操作者細(xì)致的觀察和過(guò)硬的技術(shù)。經(jīng)過(guò)通用化設(shè)計(jì),一段代碼可以重復(fù)運(yùn)行于不同網(wǎng)頁(yè),可以極大減輕工作量。
其完整流程可以用圖1表示。

圖1 R軟件網(wǎng)絡(luò)數(shù)據(jù)搜集流程圖
(1)HTTP協(xié)議
HTTP是超文本傳輸協(xié)議(HyperText Transfer Protocol),是互聯(lián)網(wǎng)中最廣泛使用的傳輸協(xié)議。此外,常用的傳輸協(xié)議還有FTP(文件傳輸協(xié)議)等。HTTP幾乎可以傳輸任何形式的資源。在HTTP傳輸?shù)男畔⒅校枰獢?shù)據(jù)搜集操作者注意的是,其網(wǎng)頁(yè)信息獲取(或提交)的方法中,最常用的有兩種:GET方法和POST方法。GET方法的特點(diǎn)是數(shù)據(jù)的傳輸都是通過(guò)URL,所以長(zhǎng)度有所限制,但也因?yàn)槿绱溯^為方便;POST方法傳輸是通過(guò)文檔正文傳輸?shù)模萘枯^大。HTTP傳輸協(xié)議在傳輸過(guò)程中,需要與服務(wù)器交換包括訪問(wèn)者、訪問(wèn)平臺(tái)、來(lái)源、訪問(wèn)記錄、網(wǎng)頁(yè)狀態(tài)結(jié)果等各種信息。在R中,具體可以通過(guò)RCurl包中的getCurlHandle()函數(shù)來(lái)構(gòu)造并提交信息。
(2)XML包對(duì)HTML的基本處理
HTML是網(wǎng)頁(yè)結(jié)構(gòu)標(biāo)準(zhǔn)架構(gòu),全稱(chēng)是超文本標(biāo)記語(yǔ)言(Hyper Text Markup Language),用于展示網(wǎng)頁(yè)結(jié)構(gòu)內(nèi)容,其特色是嵌套式的標(biāo)記結(jié)構(gòu)。HTML的標(biāo)記結(jié)構(gòu)將網(wǎng)頁(yè)文本組織起來(lái),用以指定文本中的某些特定結(jié)構(gòu)部分:如標(biāo)題、鏈接、內(nèi)容、表格等,用來(lái)告訴“網(wǎng)頁(yè)解析器”(用于解析網(wǎng)頁(yè)源代碼)網(wǎng)頁(yè)文檔各個(gè)部分的作用和展示方式,仿佛是承載整個(gè)網(wǎng)頁(yè)信息的“貨架”。要看懂HTML,重要的是要看懂它的標(biāo)簽——各個(gè)標(biāo)簽通過(guò)層層嵌套或并列的方式組織了HTML。常見(jiàn)的HTML標(biāo)簽有
處理HTML和XML一樣,常常可以解析為DOM樹(shù)。DOM樹(shù)全稱(chēng)是文檔對(duì)象模型(Document Object Model),可以被簡(jiǎn)單理解為“用樹(shù)形圖的形式將節(jié)點(diǎn)元素標(biāo)簽組織起來(lái)”。它將網(wǎng)頁(yè)中的各個(gè)元素看作各個(gè)對(duì)象,故而能被單獨(dú)提取和編輯。基于這個(gè)特點(diǎn),對(duì)于節(jié)點(diǎn)標(biāo)簽的操作,常常將其解析為DOM樹(shù)。
XML包是R中網(wǎng)頁(yè)信息提取的主要軟件包,有著各類(lèi)網(wǎng)絡(luò)文檔處理函數(shù)。對(duì)于HTML,常見(jiàn)的處理方式有節(jié)點(diǎn)選擇與丟棄。將HTML解析為DOM以后,將無(wú)用的節(jié)點(diǎn)丟棄,就得到有用的節(jié)點(diǎn)。例如想得到網(wǎng)頁(yè)源代碼的
(3)XML包對(duì)XML文檔的基本處理
XML文檔和HTML文檔作用不同:HTML主要用于展示數(shù)據(jù),XML文檔則主要是用以存放數(shù)據(jù)。但從形式上看,二者十分相似,都是層層嵌套的形式,不允許交叉嵌套。不同的是XML標(biāo)簽內(nèi)容可以自定義。任何標(biāo)簽名稱(chēng)都是允許的,只要將他們按照層次嵌套起來(lái)即可。只要理解了HTML,理解XML文檔相當(dāng)容易。
同HTML一樣,XML也可以解析為DOM樹(shù),再通過(guò)操作每一個(gè)節(jié)點(diǎn)標(biāo)簽內(nèi)的內(nèi)容完成提取。R中XML文檔專(zhuān)用的解析函數(shù)是xmlParse()。此外,XML還有一個(gè)特殊的函數(shù):xmlRoot(),它通過(guò)尋找根節(jié)點(diǎn)的方式將解析后的XML結(jié)構(gòu)化,按照其標(biāo)簽嵌套層次將XML細(xì)分。這樣節(jié)點(diǎn)層次、節(jié)點(diǎn)數(shù)量、嵌套模式,十分清晰:每一個(gè)節(jié)點(diǎn)都被清楚的分離便于定位,因此操作也變得相當(dāng)容易。
(4)RJOSNIO包對(duì)JOSN文檔的基本處理
JSON文檔同XML文檔一樣,都可以用于存儲(chǔ)網(wǎng)絡(luò)數(shù)據(jù),JSON常用于網(wǎng)絡(luò)應(yīng)用接口API,一般比XML更輕量。相比之下,XML格式統(tǒng)一,更容易與其他系統(tǒng)進(jìn)行遠(yuǎn)程交互和數(shù)據(jù)共享,但XML文件更龐大而且結(jié)構(gòu)復(fù)雜,需要占用更多的存儲(chǔ)空間。JSON的格式數(shù)據(jù)較簡(jiǎn)單,方便網(wǎng)絡(luò)存儲(chǔ)和讀取。
R中的RJOSNIO、rjson、jsonlite包都可以用來(lái)處理JOSN格式的文檔,其中RJOSNIO最為常用。RJOSNIO中的fromJSON()函數(shù)可以用來(lái)將JSON的內(nèi)容,按照其結(jié)構(gòu)層次劃分為列表,且每個(gè)層次都支持編輯。當(dāng)訪問(wèn)列表中的每一層,便能找到所需要的信息。
不論是HTML,XML還是JSON,都是有一定結(jié)構(gòu)層次的文檔。而R軟件在解析它們并提取數(shù)據(jù)的時(shí)候,不論面對(duì)何種文檔、使用何種方法,無(wú)不是建立在其結(jié)構(gòu)性特點(diǎn)的基礎(chǔ)上,將他們按照結(jié)構(gòu)節(jié)點(diǎn)分離成列表或其他形式,讓這些部分都接受直接編輯,而使得操作者可以獲得所需信息。
(5)正則表達(dá)式
正則表達(dá)式將文本視為無(wú)規(guī)則結(jié)構(gòu)(即直接看成是字符的堆疊),按照正則表達(dá)式的匹配規(guī)則,從文檔中匹配出其符合規(guī)則的內(nèi)容。正則表達(dá)式有各種元字符,如、^、$、?等。是否使用正則表達(dá)式需關(guān)注:目標(biāo)數(shù)據(jù)之間是否由明顯的共同點(diǎn),而與非目標(biāo)數(shù)據(jù)之間是否由明顯的區(qū)別。
正則表達(dá)式抓取網(wǎng)頁(yè)內(nèi)容有其獨(dú)特優(yōu)點(diǎn):它能對(duì)非標(biāo)準(zhǔn)格式的網(wǎng)頁(yè)源代碼進(jìn)行處理;另外,也能適用于網(wǎng)頁(yè)抓取后的冗雜信息處理工作。從另一角度看,正則表達(dá)式的使用的劣勢(shì)在于,當(dāng)“網(wǎng)頁(yè)結(jié)構(gòu)”也是必要信息時(shí),正則表達(dá)式在操作過(guò)程中將其破壞了。因此,正則表達(dá)式的最佳使用場(chǎng)景應(yīng)該是在常規(guī)辦法無(wú)能為力的不規(guī)則網(wǎng)頁(yè)中與數(shù)據(jù)形態(tài)清理工作,如字符替換、字符刪除、字符串拆分等。在實(shí)際應(yīng)用中,網(wǎng)頁(yè)文檔結(jié)構(gòu)不完整,甚至結(jié)構(gòu)錯(cuò)誤是常有的,平時(shí)之所以不明顯,是因?yàn)闉g覽器有一定的容錯(cuò)能力。但R軟件中的網(wǎng)頁(yè)解析器卻沒(méi)有這樣的功能,在這種情況下就可以使用正則表達(dá)式來(lái)處理網(wǎng)頁(yè)內(nèi)容。
(6)Xpath工具
Xpath是XML文檔路徑語(yǔ)言。其抓取數(shù)據(jù)的細(xì)節(jié)與正則表達(dá)式相似,但Xpath是建立在文檔的結(jié)構(gòu)性的基礎(chǔ)上的,可以理解為:Xpath通過(guò)網(wǎng)絡(luò)文檔的結(jié)構(gòu)描述目標(biāo)的“地址”。關(guān)于Xpath的具體方法有很多,常用的是絕對(duì)路徑、相對(duì)路徑和謂語(yǔ)。絕對(duì)路徑,是按照結(jié)構(gòu)層次一層不落的索引到目標(biāo)標(biāo)簽上的;而相對(duì)路徑,則是缺省了某個(gè)或某些層次,一般用“//”或“/*/”符號(hào)代替。相對(duì)路徑因?yàn)橛腥笔。识赡苡卸鄠€(gè)節(jié)點(diǎn)滿(mǎn)足,則Xpath會(huì)同時(shí)定位到多個(gè)節(jié)點(diǎn)上。使用絕對(duì)路徑相對(duì)有個(gè)優(yōu)點(diǎn)就是返回結(jié)果是唯一的,當(dāng)定位成功后查找便終止;而相對(duì)路徑書(shū)寫(xiě)輕松,卻會(huì)遍歷整個(gè)DOM樹(shù)。
(1)操作URL訪問(wèn)多個(gè)界面
這是R軟件進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)搜集的主要應(yīng)用場(chǎng)景。批量下載數(shù)據(jù)是一種重復(fù)性的工作,往往是對(duì)多個(gè)界面中某些有規(guī)律信息的下載。操作者可以通過(guò)觀察URL規(guī)律,手動(dòng)構(gòu)造URL進(jìn)行數(shù)據(jù)訪問(wèn)。例如,很多URL,都有“page=xxxx”這樣的形式,通過(guò)提交page參數(shù)來(lái)決定URL返回到某頁(yè)。又例如,很多新聞網(wǎng)站,都有著“/2016/”“/2017/”這些有規(guī)律的字樣。這些都是URL提交的參數(shù),用以返回特定的搜索結(jié)果。而理解這樣的參數(shù)并不難。可以找到這樣的規(guī)律,通過(guò)stringr包的幫助,手動(dòng)構(gòu)建URL集合,實(shí)現(xiàn)對(duì)多個(gè)界面的訪問(wèn)。
(2)動(dòng)態(tài)網(wǎng)頁(yè)和RSelenium包
很多網(wǎng)頁(yè)應(yīng)用了動(dòng)態(tài)頁(yè)面技術(shù),即AJAX技術(shù)。AJAX即異步JavaScript和XML,是一種動(dòng)態(tài)網(wǎng)站的構(gòu)建技術(shù),即使用JavaScript控制,可以只更新網(wǎng)頁(yè)部分內(nèi)容的一種技術(shù)。在網(wǎng)頁(yè)數(shù)據(jù)搜集的工作中,這門(mén)技術(shù)給設(shè)置的障礙最大的地方常常是翻頁(yè)和頁(yè)面滾動(dòng)等。例如一些購(gòu)物網(wǎng)站的商品評(píng)價(jià),翻頁(yè)之后,內(nèi)容改變了,URL卻是不改變。又如部分網(wǎng)站剛剛打開(kāi)界面時(shí)頁(yè)面是不全的,之后把頁(yè)面下拉至底部的時(shí)候,其余部分才會(huì)加載。
對(duì)于翻頁(yè)問(wèn)題,有兩個(gè)常用方法。由于動(dòng)態(tài)網(wǎng)頁(yè)是有數(shù)據(jù)庫(kù)支持的,故而可通過(guò)查看JavaScript代碼找到數(shù)據(jù)庫(kù),直接訪問(wèn)數(shù)據(jù)庫(kù)。另一個(gè)方法是模擬瀏覽器的方法。第一個(gè)方法的可行性不高,幾乎沒(méi)有任何正規(guī)網(wǎng)站會(huì)愿意讓訪客直接訪問(wèn)其數(shù)據(jù)庫(kù)。相對(duì)而言,第二個(gè)方法比較簡(jiǎn)單可行。
而使用第二種方法工作,需要下載Selenium軟件。Selenium服務(wù)器是用于測(cè)試瀏覽器①一般,Selenium只能用于檢測(cè)Firefox,chrome,IE等部分瀏覽器,而非全部。的。它的測(cè)試方式是通過(guò)JavaScript模擬真實(shí)用戶(hù)對(duì)瀏覽器進(jìn)行操作。而這個(gè)特性,正好滿(mǎn)足第二種方法的需求。只要利用R調(diào)用Selenium服務(wù)器,便可以間接控制瀏覽器,模擬真實(shí)用戶(hù)運(yùn)行瀏覽器。RSelenium軟件包會(huì)幫助操作者實(shí)現(xiàn)對(duì)Selenium軟件的調(diào)用。
當(dāng)R代碼運(yùn)行的時(shí)候,瀏覽器會(huì)如同有人操作一般自動(dòng)彈出一個(gè)新窗口,并跟隨代碼命令而動(dòng)。如果同時(shí)打開(kāi)命令界面,可以看到命令界面工作的過(guò)程。這種模擬瀏覽器的方式的特點(diǎn)是方便,它也可用于操作靜態(tài)頁(yè)面。但是靜態(tài)頁(yè)面是不建議這樣做的,因?yàn)檫@種操作方式的速度較慢。
API的全稱(chēng)為應(yīng)用程序編程接口,是有些平臺(tái)如新浪微博、推特等,用于方便程序員搭建應(yīng)用時(shí)從平臺(tái)獲取數(shù)據(jù)。API有兩個(gè)標(biāo)準(zhǔn),一個(gè)是表征狀態(tài)轉(zhuǎn)移REST和簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議SOAP。現(xiàn)在一般是使用REST。其中,表征文檔是HTML、XML、JSON等實(shí)際存儲(chǔ)數(shù)據(jù)的文檔,而交流的方式和網(wǎng)頁(yè)交流的方式一樣,一般為GET或POST。簡(jiǎn)單的說(shuō),就是通過(guò)GET或POST(有時(shí)還有PUT和DELECT)這樣的方式,來(lái)交換數(shù)據(jù)信息。而這樣的數(shù)據(jù)信息,存在于各表征文檔中。
通過(guò)API訪問(wèn)網(wǎng)站數(shù)據(jù)可以分為無(wú)需密碼的API訪問(wèn)和需要身份驗(yàn)證的API訪問(wèn)。無(wú)需密碼的API訪問(wèn):對(duì)于一個(gè)REST式API的GET請(qǐng)求,和網(wǎng)頁(yè)的GET請(qǐng)求的不同之處,在于API響應(yīng)的只有數(shù)據(jù)文檔內(nèi)容。對(duì)于API得到的文件,可以由其具體的形式確定處理辦法。目前,JSON文檔成為了API中信息的主流存儲(chǔ)模式。只要訪問(wèn)API成功,剩下的工作就視其文檔類(lèi)型而定。有些時(shí)候,API獲取信息會(huì)遇到身份驗(yàn)證,這就是OAuth身份驗(yàn)證。訪問(wèn)者需提供消費(fèi)者密鑰,用以限制權(quán)限,訪問(wèn)量以及追蹤數(shù)據(jù)。OAuth是個(gè)重要的授權(quán)標(biāo)準(zhǔn),例如新浪微博API就采取了OAuth驗(yàn)證。為了獲取API的OAuth,操作者可以事先申請(qǐng)一個(gè)應(yīng)用,通過(guò)這個(gè)應(yīng)用申請(qǐng)OAuth密鑰。這是一個(gè)比較直接的方法。R包“httr”中有一套組件是用于OAuth證書(shū)申請(qǐng)的。利用這些函數(shù),可以進(jìn)行OAuth驗(yàn)證的相關(guān)操作。
(1)下載鏈接中現(xiàn)成可閱的文件
有些重要的數(shù)據(jù),網(wǎng)站會(huì)提供鏈接以供下載,下載后便是例如PDF、csv等可閱讀的文件。R參與這種情景,往往是因?yàn)殒溄雍芏嗷蚍植荚诟鱾€(gè)界面。XML包里有一個(gè)合適的工作函數(shù)即getHTMLLinks(),可以用來(lái)在HTML網(wǎng)頁(yè)里識(shí)別鏈接。通過(guò)這個(gè)函數(shù),便可利用R中的download.file()或者getBinaryURL()(試用二進(jìn)制數(shù)據(jù),例如PDF,圖片等)進(jìn)行下載。操作者還可以使用FTP協(xié)議。利用FTP進(jìn)行文件下載,會(huì)自動(dòng)的略去HTML的布局等無(wú)關(guān)信息。同樣,F(xiàn)TP協(xié)議下的網(wǎng)頁(yè)也可以直接使用getURL函數(shù)訪問(wèn)。
(2)從HTML網(wǎng)頁(yè)采集列表、表格信息及其他信息
R軟件搜集位于網(wǎng)頁(yè)源代碼中的數(shù)據(jù),往往是有價(jià)值,因此,專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)者也會(huì)用列表、表格等清晰的展現(xiàn)形式。所以,下載網(wǎng)頁(yè)中的表格是十分常見(jiàn)的工作,故而R中有一套專(zhuān)門(mén)采集這些信息的組件、函數(shù)。XML包中有著readHTMLLis(t)函數(shù)和getHTMLTable()函數(shù),它們分別可用于鏈接獲取和表格獲取。
不過(guò),在同一個(gè)網(wǎng)頁(yè)中,列表或者表格多達(dá)到數(shù)十個(gè)甚是數(shù)百個(gè)是很正常的,而且,很多表格沒(méi)有名稱(chēng),所以Xpath對(duì)所在表格進(jìn)行定位是很必要的。Xpath路徑可以通過(guò)參數(shù)的傳遞被函數(shù)所使用,從而對(duì)象(表格、列表、鏈接)獲取固定在某個(gè)子范圍內(nèi)。當(dāng)有些信息不存在與表格或列表中,可以按照前文HTML文檔處理的方式進(jìn)行搜集。
(3)處理HTML表單
有時(shí)信息需要通過(guò)站內(nèi)搜索或者全網(wǎng)搜索來(lái)獲取。這就是HTML表單的處理。表單對(duì)話的方式很多,但是可以這樣簡(jiǎn)單的理解:訪問(wèn)者提交某些參數(shù),服務(wù)器篩選后返回符合這些參數(shù)的結(jié)果集合給訪問(wèn)者。只不過(guò),常用的提交方法GET和POST的區(qū)別在于,GET提交方法中,參數(shù)被用于組合成一定形式的URL,而POST提交方法中這些參數(shù)是通過(guò)正文發(fā)送而已。所要做的,找到表單(即找到表單的節(jié)點(diǎn)標(biāo)簽