作者StubbornLin (Victor)
看板Python
標題[心得] 用Python抓網頁的心得
時間Sun Oct 5 16:25:01 2008
http://blog.ez2learn.com/2008/10/05/python-is-the-best-choice-to-grab-web/
我寫了一篇關於Python抓網頁的心得
有興趣可以看看
我抓到現在的結論是,以工具而言
Twisted + lxml是最好用的
想抓網頁的可以參考看看 :P
接下來有空我會討論設計上的問題
然後過一陣子我想把我那些程式整理成Library弄成Open source project
以上 :D
--
易記學 程式設計教學
http://ez2learn.com/
易記學 程式設計討論區
http://forum.ez2learn.com
VICTOR's 個人Blog
http://blog.ez2learn.com/
財報分析王
http://victorlin.serveftp.org/stock/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.85.205
1F:推 poorsen:推 10/05 16:39
2F:推 softwind:推 加油! 10/05 16:52
3F:推 liangjr:what's wrong with urllib.urlopen()? 10/05 17:09
4F:推 wanderer:推 10/05 17:21
5F:→ StubbornLin:urllib不是不好 而是不夠好 10/05 17:31
6F:→ StubbornLin:當你有一堆網頁想非同步抓取 urllib就顯得不適合 10/05 17:31
7F:→ StubbornLin:因問它是同步的函數 而twisted整個都是非同步在跑的 10/05 17:32
8F:→ StubbornLin:一次只抓一頁的話 整個時間都等在那個網頁上面 10/05 17:34
9F:→ StubbornLin:同時間很多個網頁一起抓 誰先好先parse誰 這樣比較快 10/05 17:34
10F:→ StubbornLin:cpu使用率和網路使用率也會比較高 10/05 17:34
11F:→ StubbornLin:而我在使用Twisted之前就是用urllib自己寫threadpool 10/05 17:35
12F:→ StubbornLin:發現Twisted可以用 我寫threadpool根本是重覆twisted 10/05 17:35
13F:→ StubbornLin:Twisted的架構比我當初寫的好太多 就沒理由用urlopen 10/05 17:36
14F:推 liangjr:了解 我只是在想python有內建的library 10/05 17:45
15F:→ liangjr:為了抓網頁裝twisted好像有點殺機用牛刀了 10/05 17:46
16F:→ liangjr:如果只是少量抓取的話 大量的話urllib還是不堪使用的 10/05 17:47
17F:→ StubbornLin:Twisted有IOCP epoll等等reactor可以用 10/05 17:47
18F:→ StubbornLin:我的水管太小 加上當時用BeautifulSoup 10/05 17:48
19F:→ StubbornLin:抓財報資料幾乎都卡在cpu使用率上 10/05 17:49
20F:→ StubbornLin:當水管大 又有大量但小筆的資料時 Twisted的優勢 10/05 17:49
21F:→ StubbornLin:應該就可以表現出來 還有它極度穩定 等等好處 10/05 17:49
22F:→ StubbornLin:它的Deferred機制也很好用 我都串起getPage 10/05 17:51
23F:→ StubbornLin:後面放Parser 接著存到資料庫等等 10/05 17:51
24F:→ StubbornLin:它本身就是一個責任鏈 最麻煩的錯誤它也有處理 10/05 17:52
25F:→ StubbornLin:除此之外 還可以用來包裝retry的功能 10/05 17:58
27F:推 deathdream:謝謝原PO,你的網站讓我獲益良多,感謝。 10/05 22:47
28F:推 bizkit: <---- urllib大量抓網頁使用者 :| 10/05 23:06
29F:→ bizkit:然後我也是用soup加自己寫multi-thread XD 10/05 23:07
30F:推 AndCycle:人家習慣用pycurl _A_ 10/05 23:11
31F:→ StubbornLin:= .= 你不覺得soup喝下去整個CPU快燒起來了嗎 10/05 23:19
32F:推 AndCycle:那就再開個pyprocessing就好了, cpu不就是這樣用的 (? 10/05 23:23
33F:→ StubbornLin:我是指beautifulsoup太吃資源= = 10/05 23:37
34F:推 superGA:幹麻用soup 自己寫re一定最快 10/05 23:48
35F:→ StubbornLin:re寫少還算輕鬆 寫很多就很頭大= = 10/05 23:51
36F:→ StubbornLin:不管怎樣 lxml高效率 又好用 XD 10/05 23:52
37F:推 csdcbiz:但是我是在cluster上跑 所以我有N張網卡 2N個核心 XD 10/06 21:39
38F:推 bizkit:用錯id :p 10/06 21:40
39F:→ StubbornLin:有錢鬼 Q_Q 用什麼cluster 有錢的話我也想分散阿 >< 10/07 00:45
40F:→ genephantom:而且re一多過幾天自己就不想看了..XD 10/07 09:17
41F:推 bizkit:沒錯 一開始我也用re XD 10/08 08:50
42F:推 superGA:看來我是例外xd 10/10 09:36
43F:推 guteres:抓到分身了? 10/11 23:06