99麻豆久久久国产免费福利精品,国产精品成人国产乱,玖玖操,手机看片169,国产精彩视频在线观看,午夜亚洲福利视频,国产伦乱视频

龍巖易富通網(wǎng)絡(luò )科技有限公司

龍巖小程序開(kāi)發(fā),龍巖分銷(xiāo)系統

win下wget采集網(wǎng)頁(yè)內容

2016.05.02 | 1797閱讀 | 0條評論 | shell腳本

需要采集一批數據,是一網(wǎng)站上的產(chǎn)品信息,產(chǎn)品本身信息很簡(jiǎn)單,使用火車(chē)采集器輕松實(shí)現;但產(chǎn)品價(jià)格數據是ajax響應數據,使用firebug + live http headers抓到該請求,并測試重發(fā),發(fā)現該ajax請求必須帶一個(gè)http頭“X-Requested-With: XMLHttpRequest”,沒(méi)有就返回404錯誤。


gnu/linux下有大量的殺手級工具,這種情況,要動(dòng)用其中的wget. wget有很多參數,這里需要使用其中兩個(gè):-O,--header. 其中:


-O, 把請求結果保存到指定文件,但我們要使用的卻是一個(gè)特殊的值:“-”,它可以將結果輸出到標準輸出


--header, 結http請求加上自定義的頭(http header)


于是對于每條產(chǎn)品數據,都發(fā)送這樣的請求:


wget --header="X-Requested-With: XMLHttpRequest" -O save_123.txt "http://www.website.com/request/path/?Id=123"


這樣每條產(chǎn)品都保存到save_123.txt,save_124.txt,save_125.txt....這樣的一系列文件中。不過(guò)有個(gè)問(wèn)題是,每條數據一個(gè)文件,后期分析不方便。所以將其存儲到單一的文件里。


方案:先將wget結果指向到標準輸出,然后再使用重定向符 >> 定向到單一的文件里。


不過(guò),還有一個(gè)問(wèn)題,每個(gè)http響應里沒(méi)有產(chǎn)品id號,數據跟采集到的產(chǎn)品信息對不上號。于是在每寫(xiě)一筆采集結果前,往文件里先寫(xiě)入該產(chǎn)品的id號。


這里使用echo 命令,要用到echo 的參數:-e, 作用是使用轉義符輸出換行。示例:echo -e "aaa\nbbb"


于是構造這樣的bash腳本:


echo -e "\n"10011"\t"  >>data.log ;wget --header="X-Requested-With: XMLHttpRequest" -O- "http://www.website.com/request/path/?Id=10011" >>data.log; 

echo -e "\n"10012"\t"  >>data.log ;wget --header="X-Requested-With: XMLHttpRequest" -O- "http://www.website.com/request/path/?Id=10012" >>data.log; 

echo -e "\n"10013"\t"  >>data.log ;wget --header="X-Requested-With: XMLHttpRequest" -O- "http://www.website.com/request/path/?Id=10013" >>data.log; sheep 1;

echo -e "\n"10014"\t"  >>data.log ;wget --header="X-Requested-With: XMLHttpRequest" -O- "http://www.website.com/request/path/?Id=10014" >>data.log; 

echo -e "\n"10015"\t"  >>data.log ;wget --header="X-Requested-With: XMLHttpRequest" -O- "http://www.website.com/request/path/?Id=10015" >>data.log; 

echo -e "\n"10016"\t"  >>data.log ;wget --header="X-Requested-With: XMLHttpRequest" -O- "http://www.website.com/request/path/?Id=10016" >>data.log; sheep 1;


第三行加一個(gè)sheep 1, 即每采三條暫停1秒鐘,作用是防止請求過(guò)于密集而影響服務(wù)器響應,暫停秒數按實(shí)際情況設置。


所有數據都保存到data.log文件里。


其實(shí),對于而需要提取的數據,完全可以通過(guò)grep從定向到標準輸出的wget結果里提取。只是這里不么做了。


贊 (

發(fā)表評論

彩票| 石泉县| 舟山市| 清涧县| 堆龙德庆县| 甘孜县| 安吉县| 尚义县| 商水县| 固始县| 竹北市| 屯留县| 黎城县| 顺义区| 社旗县| 丽江市| 公安县| 大荔县| 陵川县| 泗洪县| 广宁县| 翁源县| 梅州市| 华容县| 苏尼特右旗| 伊宁县| 三都| 德庆县| 商丘市| 呼和浩特市| 邛崃市| 常山县| 禹城市| 政和县| 莱阳市| 县级市| 乌恰县| 门头沟区| 句容市| 定安县| 莆田市|