「beginning.python.from.novice.to.professional,2nd.edition」 裡面的347-348 of 667 (pdf page),因為網頁更新,原來的例子已經不能用啦。下面是我改的最新版的python2.7下的**。
用htmlparser這個煩是煩,但是裡面的邏輯值得小小品味。
本質是個迴圈,然後把裡面各種方法改寫一下。好有意思。多謝amber dang同學教我如何檢視,也特別感謝下面這篇部落格,放了htmlparser的原始碼。
#使用htmlparser的爬蟲
from urllib import urlopen
from htmlparser import htmlparser
class
scraper
(htmlparser):
in_h2 = false
in_link = false
defhandle_starttag
(self,tag,attrs):
attrs = dict(attrs)
if tag =='h2':
self.in_h2 = true
if tag =='a'
and'href'
in attrs:
self.in_link = true
self.chunks =
self.url = attrs['href']
defhandle_data
(self, data):
if self.in_link:
defhandle_endtag
(self,tag):
#這段比較微妙,有意思。
if tag =='h2':
self.in_h2 = false
if tag == 'a':
if self.in_h2 and self.in_link:
print
'%s (%s)' % (''.join(self.chunks),self.url)
self.in_link = false
text = urlopen('').read()
parser = scraper() #建立scraper物件,且此物件在建立時已經賦予htmlparser物件的特徵。
parser.feed(text) #其實就是htmlparser.feed函式,跑到上面的scraper定義的function裡面去跑了。這種寫法我自己是寫不出的,缺少這種觀念。
parser.close()
#使用beautiful soup
from urllib import urlopen
from beautifulsoup import beautifulsoup
from ipdb import set_trace
text = urlopen('').read()
soup = beautifulsoup(text)
jobs = set()
for header in soup('h2'):
links = header('a') #這裡原來有個css class = reference,在現在的網頁上,已經被乾掉了。
ifnot links:continue
link = links[0]
jobs.add('%s (%s)' % (link.string,link['href']))
print '\n'.join(sorted(jobs,key=lambda s: s.lower())) #排序比較時忽略大小寫
改寫linux視窗程式設計的Qt例子 5
第三十六例子 乙個簡單的繪圖工具 首先,先說明下,不知道為什麼,反正各種線段的型別,感覺不明顯,不知道是程式不對還是怎麼了 求大神指點。author 375159507 qq.com try from pyside import qtgui from pyside import qtcore exc...
改寫linux視窗程式設計的Qt例子 6
第三十七例子 改變的透明度 首先,書上的很多列子,沒有給全,有些 片段是我自己加的。我水平不是很高,如果,有些 加的不是合適,懇請各位大神指點!另外,關於注釋的話,書上都講的很清楚了,我這裡沒有必要畫蛇添足了。如果,實在有不懂的地方,麻煩告訴我,如果我懂的話,我會告訴你!如下 author 3751...
AS 3學習書上的例子,勇士鬥惡龍
放在第一幀測試 import flash.utils.timer import flash.events.timerevent 建立英雄 var hero object new object 建立惡龍 var monster object new object 英雄的屬性 hero.name 勇者 ...