改動:優化了顯示,去掉
等標籤;
輸入一次enter載入一頁而不是不停載入
# -*- coding: utf-8 -*-
import urllib2
import urllib
import re
import thread
import time
import json
#----------- 載入處理糗事百科 -----------
class spider_model:
#宣告self:含有page pages enabled
def __init__(self):
self.page = 1
self.pages =
self.enable = false
# 將所有的段子都扣出來,新增到列表中並且返回列表
def getpage(self,page):
myurl = "" + page
user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'
headers =
req = urllib2.request(myurl, headers = headers)
myresponse = urllib2.urlopen(req)
mypage = myresponse.read()
# print mypage
unicodepage = mypage.decode("utf-8")
# 找出所有class="content"的div標記
#re.s是任意匹配模式,也就是.可以匹配換行符
myitems = re.findall('\n\n+(.*?)\n\n+
',unicodepage,re.s)
items =
# print myitems
# print str(myitems).decode('string_escape')
# print json.dumps(myitems, encoding="utf-8", ensure_ascii=false)
# for item in myitems:
# # item 中第乙個是div的標題,也就是時間
# # item 中第二個是div的內容,也就是內容
# print myitems
# print str(myitems).decode('string_escape')
# print str(myitems).encode("utf-8")
# print myitems[0]
return myitems
# 用於載入新的段子
def loadpage(self):
# 如果使用者未輸入quit則一直執行
while self.enable:
# 如果pages陣列中的內容小於2個
# print len(self.pages)
if len(self.pages) < 2:
try:
# 獲取新的頁面中的段子們
mypage = self.getpage(str(self.page))
self.page += 1
except:
print '無法鏈結糗事百科!'
else:
time.sleep(5)
# def showpage(self,nowpage,page):
# print u'第%d頁' % page,json.dumps(nowpage, encoding="utf-8", ensure_ascii=false)
def showpage(self,nowpage,page):
i = 0
# print len(nowpage)
for i in range(0,len(nowpage)):
if i < len(nowpage):
onestory="\n\n"+nowpage[i].replace("\n\n","").replace("
","\n")+"\n\n"
print u'第%d頁,第%d個故事' %(page,i) ,onestory
i += 1
else:
break
if myinput == "quit":
self.enable = false
def start(self):
self.enable = true
page = self.page
print u'正在載入中請稍候......'
# 新建乙個執行緒在後台載入段子並儲存
thread.start_new_thread(self.loadpage,())
#----------- 載入處理糗事百科 -----------
while self.enable:
# 如果self的page陣列中存有元素
if self.pages:
nowpage = self.pages[0]
del self.pages[0]
self.showpage(nowpage,page)
page += 1
#----------- 程式的入口處 -----------
print u"""
---------------------------------------
程式:糗百爬蟲
版本:0.3
日期:2014-06-03
改進1:周二也被占用
改進2:allenwithallen 20160931
語言:python 2.7
功能:按下回車依次瀏覽今日的糗百熱點
---------------------------------------
"""
print u'請按下回車瀏覽今日的糗百內容:'
raw_input(' ')
mymodel = spider_model()
mymodel.start()
簡單爬取糗事百科
剛剛入門,對於爬蟲還要折騰很久才行,雖然很多功能還沒開始掌握,但是爬取下來就很開心,接下來還會爭取進步的。把自己出現的一些錯誤都加上了注釋,我目前還在學習當中,大家一起進步。期間學了乙個新的函式,在這裡分享下 strip 網上是這麼說的 需要注意的是,傳入的是乙個字元陣列,編譯器去除兩端所有相應的字...
python 爬取糗事百科
step 1 構建乙個提取糗事百科笑話的函式import urllib2 import urllib import re import thread import time import sys reload sys sys.setdefaultencoding utf 8 defgetpage p...
Python爬取糗事百科
一 引入模組 因為urlopen功能比較簡單,所以設定 ip需引入proxyhandler和build opener模組,ip的獲取可以上西祠 查詢 import re from urllib.request import request,build opener,proxyhandler base...