python學習系列1 爬取糗事百科段子

2021-08-22 06:02:33 字數 3206 閱讀 5951

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @time : 2018\8\3 0003 20:38

# @author : aries

# @site :

# @file : getstoriesfromqsbk.py

# @software: pycharm

import urllib

import urllib2

from bs4 import beautifulsoup

class qsbk:

#初始化方法,定義爬取時所需的變數

def __init__(self):

self.pageindex=1

self.user_agent='mozilla/5.0 (windows nt 6.1; win64; x64)'

self.headers =

#存放讀取的故事及相關資訊,每乙個元素是一頁的內容

self.contents=

#存放程式是否繼續執行的變數

self.enable=false

#存放頁面總共的頁數

self.pageall=0

#獲取某一頁的頁面**

print u"連線糗事百科失敗,錯誤原因:", e.code

return none

if hasattr(e, "reason"):

print u"連線糗事百科失敗,錯誤原因:", e.reason

return none

#獲取某一頁不帶的頁面內容

def getpagecontent(self,pageindex):

pagecode = self.getpagecode(pageindex)

if pagecode:

soup = beautifulsoup(pagecode)

nodes = soup.select('#content-left')

node = nodes[0]

contents =

# 該頁所有發布者

author = node.select('h2')

# 該頁所有發布內容

content = node.select('div.content')

# 該頁所有點讚數(好笑)

stats_vote = node.select('.stats-vote .number')

stats_comments = node.select('.stats-comments .number')

# 總頁數

if self.pageall==0:

pageall = node.select('span.page-numbers')

self.pageall = int(pageall[len(pageall) - 1].get_text().strip())

# 儲存頁面內容

for i in range(0, len(author)):

[author[i].get_text().strip(), content[i].get_text().strip(), stats_vote[i].get_text().strip(),

stats_comments[i].get_text().strip()])

return contents

else:

print "頁面載入失敗..."

return none

#根據回車,列印該頁的乙個段子內容

def getonestory(self,content):

if self.pageindex<=self.pageall+1:

#列印乙個段子

item=content

#等待使用者輸入

input=raw_input()

if input=="q":

self.enable=false

return

self.loadpage()

else:

print "\n已載入全部頁面內容,請按q退出!"

#等待使用者輸入

input=raw_input()

#判斷接收任意鍵已經按下的結果退出

if input=="q":

self.enable=false

return

#載入並提取頁面的內容。加入列表中

def loadpage(self):

if self.enable==true:

if len(self.contents)==0:

pagecontent=self.getpagecontent(self.pageindex)

if pagecontent:

self.contents = pagecontent

self.pageindex += 1

else:

print "頁面載入失敗..."

return

#開始方法

def start(self):

print "正在讀取糗事百科,按回車檢視新段子,退出請按q"

#使變數為true,程式正常執行

self.enable=true

#先載入一頁內容和總共的頁數

self.loadpage()

while self.enable:

if self.contents:

#傳入乙個段子

content=self.contents[0]

#傳入之後刪除該段子

del self.contents[0]

#列印乙個段子,傳入乙個段子的內容

self.getonestory(content)

spider=qsbk()

spider.start()

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...

Python 爬取糗事百科

coding utf 8 import urllib2 import urllib import re class qiushi def init self self.page 1 從網頁獲取糗事 def getqiushis self,page url page 偽裝瀏覽器 user agent ...