#coding:utf-8import 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 引數,要進行替換的資料
def replace_rs(self,rs):
name = re.sub(self.remove_n, '', rs[0])
content = re.sub(self.remove_n, '', rs[2])
content = re.sub(self.replace_br, r'\n', content)
content = re.sub(self.remove_ele, '', content)
dz_tuple = (name, rs[1], content, rs[3], rs[4])
# 返回處理後的元組
return dz_tuple
#糗事百科爬蟲類
class qsbk(object):
'''1.根據url位址獲取網頁源**
2.從網頁源**中提取想要的資料
3.儲存或展示資料
'''#把爬蟲需要的基礎設定進行初始化
def
__init__(self):
#爬蟲基礎url位址,不包含引數部分
self.baseurl = ''
#請求頭
self.headers =
# 建立乙個tools物件,把物件賦值self的tool屬性
# 在整個爬蟲的過程中,只建立乙個tools工具類的物件
self.tool = tools()
#根據頁碼獲取html源**
def get_page(self,num):
#1、根據num拼接完整的url位址
#str()轉化為字串,int()轉換為整數
url = self.baseurl+str(num)
#2.建立request物件
request=urllib2.request(url,headers=self.headers)
# 3. 發起請求,接收響應
try:
response = urllib2.urlopen(request)
except (urllib2.urlerror,exception),e:
'連線糗事百科失敗,原因:%s'%e
#獲取失敗,返回none
return
none
else:
# 返回頁碼對應的html源**
return response.read()
#從一段html源**中獲取資料
def get_data(self,html):
# 1.準備正規表示式
pattern = re.compile(
r'.*?.*?icon">(.*?)
.*?class="content">(.*?).*?(.*?).*?(.*?)',
re.s)
# 2.根據正規表示式篩選資料
results = re.findall(pattern, html)
# 準備列表,存放處理後的資料
rs_data =
# 3.處理篩選出的資料
for rs in results:
dz_tuple = self.tool.replace_rs(rs)
# 把元組放在列表中
# 4.返回處理後的資料
return rs_data
#物件函式,開始爬蟲
def start(self):
#1.根據某一頁頁碼,獲取該頁的html源**
html = self.get_page(1)
# 2.如果獲取到的html源**不為none,則從源**中提取資料
if html == none:
return
rs_data = self.get_data(html)
for rs in rs_data:
s = raw_input('敲擊回車檢視下一條段子,輸入q結束:')
if s == 'q':
'程式結束!'
break
print rs[2]
print '\n
'if __name__ == '__main__':
#建立qsbk物件
qsbk = qsbk()
qsbk.start()
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...
Python爬蟲實戰 糗事百科
前面我們已經說了那麼多基礎知識了,下面我們做個實戰專案來挑戰一下吧。這次就用前面學的urllib和正規表示式來做,python爬蟲爬取糗事百科的小段子。爬取前我們先看一下我們的目標 1.抓取糗事百科熱門段子 2.過濾帶有的段子 首先我們確定好頁面的url,糗事百科的 是 但是這個url不方便我們後面...