爬取糗事百科的spider

2021-07-23 17:05:14 字數 2764 閱讀 6695

個人一直對網路爬蟲感興趣,最近使用python的flask框架開發了乙個小型**(有待改進)以及最近在學習深度學習的開源框架caffe,caffe提供了python介面。藉此機會學習了一下python以及利用python開發爬蟲。希望後面能夠利用自己寫的爬蟲,爬取一些資料集用於caffe訓練。

**如下:

__author__ = 'jwl'

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

import urllib

import urllib2

import re

import thread

import time

#嗅事百科爬蟲類

class bk:

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

def __init__(self):

self.pageindex = 1

self.user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'

#初始化headers

self.headers =

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

self.stories =

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

self.enable = false

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

def getpage(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

def getpageitems(self,pageindex):

pagecode = self.getpage(pageindex)

if not 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])

return pagestories

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

def loadpage(self):

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

if self.enable == true:

if len(self.stories) < 2:

#獲取新一頁

pagestories = self.getpageitems(self.pageindex)

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

if pagestories:

self.pageindex += 1

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

def getonestory(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\t贊:%s" %(page,story[0],story[1],story[2])

#開始方法

def start(self):

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

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

self.enable = true

#先載入一頁內容

self.loadpage()

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

nowpage = 0

while self.enable:

if len(self.stories)>0:

pagestories = self.stories[0]

#當前讀到的頁數加一

nowpage += 1

#將全域性list中第乙個元素刪除

del self.stories[0]

self.getonestory(pagestories,nowpage)

spider = bk()

spider.start()

python丨Spider類爬取糗事百科

安裝 pip install pypiwin32 pip install twisted 18.7.0 cp36 cp36m win amd64.whl pip install scrapy 建立和執行專案 scrapy startproject qsbk 建立專案 scrapy genspider...

簡單爬取糗事百科

剛剛入門,對於爬蟲還要折騰很久才行,雖然很多功能還沒開始掌握,但是爬取下來就很開心,接下來還會爭取進步的。把自己出現的一些錯誤都加上了注釋,我目前還在學習當中,大家一起進步。期間學了乙個新的函式,在這裡分享下 strip 網上是這麼說的 需要注意的是,傳入的是乙個字元陣列,編譯器去除兩端所有相應的字...

python 爬取糗事百科

step 1 構建乙個提取糗事百科笑話的函式import urllib2 import urllib import re import thread import time import sys reload sys sys.setdefaultencoding utf 8 defgetpage p...