Python 爬蟲 糗事百科 (改)

2021-07-28 18:31:31 字數 2775 閱讀 7044

出問題主要是正規表示式的修改

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

import urllib

import urllib2

import re

import thread

import time

#糗事百科爬蟲類

class

qsbk:

#初始化方法,定義一些變數

def__init__

(self):

self.pageindex=1

self.user_agent='mozilla/5.0 (x11; linux x86_64)'

#初始化headers

self.headers=

#存放變數,每乙個元素是每一頁的段子

self.stories=

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

self.enable=false

#傳入某一頁的索引獲得頁面**

defgetpage

(self,pageindex):

try:

url=''+str(pageindex)

#構建請求的request

request=urllib2.request(url,headers=self.headers)

#利用urlopen獲取頁面**

response=urllib2.urlopen(request)

#將頁面轉化為utf-8編碼

pagecode=response.read().decode('utf-8')

return pagecode

except urllib2.urlerror, e:

if hasattr(e,"reason"):

print

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

return

none

#傳入某一頁**,獲得段子內容

defgetpageitems

(self,pageindex):

pagecode=self.getpage(pageindex)

ifnot pagecode:

print

"頁面載入失敗。。。"

return

none

pattern = re.compile('.*?href.*?

.*?(.*?)',re.s)

items = re.findall(pattern,pagecode)

#用來儲存每頁的段子

pagestories=

for item in items:

#將編譯成物件,加快匹配速度

replacebr=re.compile('

') #把

替換成換行

text = re.sub(replacebr,"\n",item[1])

#item[0]是乙個段子的發布者,item[1]是內容,item[2]是點讚數

return pagestories

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

defloadpage

(self):

#如果當前未看的頁數少於2頁,則載入新一頁

if self.enable == true:

if len(self.stories) < 2:

#獲取新一頁

pagestories = self.getpageitems(self.pageindex)

#將該頁的段子存放到全域性list中

if pagestories:

self.pageindex += 1

#呼叫該方法,每次敲回車列印輸出乙個段子

defgetonestory

(self,pagestories,page):

#遍歷一頁的段子

for story in pagestories:

#等待使用者輸入

input = raw_input()

#每當輸入回車一次,判斷一下是否要載入新頁面

self.loadpage()

#如果輸入q則程式結束

if input == "q":

self.enable = false

return

print

u"第%d頁\t發布人:%s\t贊:%s\n%s" %(page,story[0],story[2],story[1])

#開始方法

defstart

(self):

print

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

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

self.enable = true

#先載入一頁內容

self.loadpage()

#區域性變數,控制當前讀到了第幾頁

nowpage = 0

while self.enable:

if len(self.stories)>0:

#從全域性list中獲取一頁的段子

pagestories = self.stories[0]

#當前讀到的頁數加一

nowpage += 1

#將全域性list中第乙個元素刪除,因為已經取出

del self.stories[0]

#輸出該頁的段子

self.getonestory(pagestories,nowpage)

spider = qsbk()

spider.start()

python爬蟲糗事百科

coding utf 8 import urllib2 import re 工具類 class tools object remove n re.compile r n replace br re.compile r remove ele re.compile r re.s rs 引數,要進行替換的...

Python爬蟲 糗事百科

如果沒有這兩個庫 在命令列任意位置下 前提是你已經配置好了環境,這個網上大把,自行google pip install requests,pip install bs4 import beautifulsoup import requests from bs4 import beautifulsou...

爬蟲 糗事百科爬蟲

糗事百科爬蟲 寫這個爬蟲花了我相當相當多的時間,因為總是爬著爬著就看這糗事百科上的段子去了。環境 python 3.6 import csvimport json import random import requests from bs4 import beautifulsoup class qi...