個人一直對網路爬蟲感興趣,最近使用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...