Open asika32764 opened 10 years ago
或者用 PHP Dom Parser 也可以 https://github.com/paquettg/php-html-parser
BrowserKit 要自己寫一個 class 去 extends 他的 Client 才可以用 HTTP 爬網站
因為他的 doRequest
是空的 abstract function XD
可以改成用 Goutte 處理,他有包裝好這些東西 https://github.com/fabpot/Goutte
Goutte 包裝的 package 有這些
看起來不錯。
我原本也有打算只用 PHP DomParser
就好,可以用 css3 語法來 Test,不用額外學語法
$dom = new Dom($html);
$h1 = $dom->find('body h1.head');
$this->assertEquals('Hello World', trim($hi->innerText));
另外也有考慮過用 SimpleXML 搭配 Xpath
$xml = simple_xml_load_string($html);
$this->assertEquals('Hello World', (string) $xml->xpath('//h1'));
而 Symfony 的 CssSelector 也可以把 css3 selector 轉換成 xpath
不過不知道為什麼有些 html 頁面被 SimpleXML 吃的時候就是會錯誤
以上兩者的好處是可以用 css3 選擇器來測試
$crawler->filter()
好像也是 css3 語法
simple_xml_load_string
可能會有 html encoding 的問題,這部分可能得用 mb_encoding 或是 iconv 解決,但...視處理 case 的狀況,有時候非常麻煩,以前我在爬日本網頁的時候常被這個搞死 XD
goutte
用的 guzzle
會處理掉 encoding 的問題,至少我在測以前的 case 的時候看起來沒什麼問題
CSSSelector
其實我用的經驗不多,但我想都夠用了,既然是要能被測試的 HTML,寫出來 HTML 也不應該難以被描述成 test case 才是,以後開發頁面的時候可以討論看看
寫出來 HTML 也應該難以被描述成 test case 才是
寫出來 HTML 也不應該難以被描述成 test case 才是
修正一下
用一個 Windwalker 的預設鷹架就可以測試了
可以用這個 repo 來測試 https://github.com/smstw/devsite
好像忘了考慮 JS 的測試,這樣只能測試靜態頁面 (短期內也夠了啦)
昨天上完 phpunit 的課,回家再看 Mocha。
發現語法長得好像,閱讀功力大增!
老牌的 Jasmine http://jasmine.github.io/
jquery 的 QUnit http://qunitjs.com/
先以測試靜態的頁面為主 使用看看 Goutte
加裝 Symfony DomCrawler & BrowserKit