改寫書上過期的例子

2021-07-25 15:06:54 字數 1830 閱讀 3512

「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 勇者 ...