Python爬蟲入門學習例子之糗事百科

2021-07-23 09:20:37 字數 2396 閱讀 7378

初學python爬蟲,學習資料是這篇部落格:

python爬蟲入門教程

下面列出乙個爬糗事百科的例子鞏固一下。

#   程式:糗百爬蟲  

# 語言:python 2.7

# 功能:按下回車依次瀏覽今日的糗百熱點

import urllib2,re,time,thread

class spider_model:

#類初始化

def __init__(self):

self.page = 1

self.pages =

self.enable = false

#將所有的段子都扣出來,新增到列表中並且返回列表

def getpage(self,page):

myurl = "" + str(page) + "/?s=4915752"

#偽裝成瀏覽器

headers =

req = urllib2.request(myurl,headers=headers)

myresponse = urllib2.urlopen(req)

mypage = myresponse.read()

#如果你出現了亂碼,可以decode解碼

unicodepage = mypage.decode('utf-8')

#段子都在class="content"的div標記的內部,正規表示式匹配一下。

#最後的re.s表示.可以匹配換行符(.本來是匹配除換行符外的任意字元),.*?即非貪婪匹配任意字元,

#\n+表示乙個或多個空格,中間括號中的內容就是我們要找的段子,以列表形式存在myitems中(type()可以檢視型別,以迴圈方式列印輸出不會有亂碼)。

myitems=re.findall('\n+(.*?)\n+

',unicodepage,re.s)

#print type(myitems)

#for item in myitems:

# print item

return myitems

#後台執行緒載入新的段子,存在列表pages中

def loadpage(self):

#如果使用者未輸入quit,則一直執行

while self.enable:

#如果pages陣列中的內容小於2個,就獲取新頁面中的段子

if len(self.pages) < 2:

try:

mypage = self.getpage(self.page)

self.page += 1

except:

else:

#5是推遲執行的秒數(即休眠5秒),使用前要import time

time.sleep(5)

#顯示頁面

def showpage(self,nowpage,page):

#以u開頭的字串表示unicode字串,以r開頭的字串表示忽略轉義

print u'第%d頁:' % page

#迴圈輸出

for i in nowpage:

#replace()是替換函式,把前邊的字串替換為後邊的字串

print i.replace('

','')

#啟動函式,同時啟動了新執行緒

def start(self):

self.enable = true

page = self.page

print u'正在新建乙個執行緒在後台載入段子並儲存……'

#啟動新執行緒,前乙個引數是要呼叫的執行緒函式,後者是要傳給它的引數

thread.start_new_thread(self.loadpage,())

while self.enable:

#如果self.pages中有元素,就呼叫showpage函式

if self.pages:

nowpage = self.pages[0]

del self.pages[0]

self.showpage(nowpage,page)

page += 1

print u'如果要退出後台程序,請輸入quit'

#raw_input()是接受輸入,引數可以直接列印出來,str()是轉換成字串型別

myinput = str(raw_input(u'輸入quit退出,或回車繼續:'))

if myinput == 'quit':

self.enable = false

#程式入口

mymodel = spider_model()

mymodel.start()

整體執行流程:例項化乙個類後,呼叫函式start,然後函式loadpage開啟執行緒並呼叫getpage獲得段子內容,通過showpage輸出段子內容。

python爬蟲之 入門基礎

可以參考我之前學習的時候 的一篇文章一次完整的http事務過程 超詳細 2.還需要了解一下http的請求方式 有興趣的同學可以去查一下http的八種請求方法,這裡呢主要說下get請求和post請求,這兩種在以後學習中會用到的比較多。get請求 get方法用於使用給定的uri從給定伺服器中檢索資訊,即...

python爬蟲入門學習記錄

在使用爬蟲前確保requests和beautifulsoup4模組都已經安裝好了 pip install requests pip install beautifulsoup4 beautifulsoup4使用手冊 簡單的示列 import requests 匯入requests包 url strh...

python爬蟲小例子

如下 r.raise for status 的功能是判斷返回的狀態碼,如果狀態碼不是200 如404 則丟擲異常 來檢視user agent屬性。requests庫寫的 預設user agent是 python requests x.xx.x x表示版本號 如果訪問不成功,可嘗試修改 user ag...