網路段子爬蟲程式

2021-09-22 12:17:13 字數 2437 閱讀 5299

本文參考了以下資料

urllib2庫的基本使用

傳智播客黑馬社群

urllib2庫的基本使用

所謂網頁抓取,就是把url位址中指定的網路資源從網路流中讀取出來,儲存到本地。 在python中,我們使用urllib2這個元件來抓取網頁。

urllib2 官方文件:

urllib2 原始碼:

時間花在學習正規表示式上

pattern = re.compile(r'(?<=.html">)(.*?)(?=

)')正規表示式慢慢積累吧

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

import urllib2

import re

class spider:

"""段子爬蟲類

"""def __init__(self):

self.enable = true

self.page = 1 # 當前要爬去第幾頁

@staticmethod

def load_page(page):

"""@brief 傳入位址得到http資料報

@param page 生成url使用的引數

@returns **response內容

"""# 我們要請求的url位址

url = "經典段子/" + str(page)

# 我們要偽裝的瀏覽器user-agent頭

# user-agent頭

user_agent = 'mozilla/5.0 (compatible; msie 9.0; windows nt 6.1; trident / 5.0'

# 建立乙個字典,使請求的headers中'user-agent':對應我們user_agent字串

headers =

# 新建乙個請求,需要將請求中的headers變數換成我們剛才建立好的headers

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

# 請求伺服器,得到回應

response = urllib2.urlopen(req)

# 得到回應的內容

html_raw = response.read()

# 有可能 需要gbk轉unico 編碼

# gbk_html = html.decode('gbk').encode('utf-8')

return html_raw

def page_to_list(self, html_raw):

"""@brief 頁面處理得到的段子列表

@html 頁面

"""# 使用前後斷言取出內容

pattern = re.compile(r'(?<=.html">)(.*?)(?=

)') item_list = pattern.findall(html_raw)

return item_list

def write_file(self, text):

"""@brief 寫字串到磁碟

@param text 字串

"""my_file = open("./dz.txt", 'a')

my_file.write(text)

my_file.write("\n\n")

my_file.close()

def print_page(self, item_list, page):

"""@brief 取出元素並寫入磁碟

@param item_list 得到的段子列表

@param page 處理第幾頁

"""print "******* 第 %d 頁 爬取完畢...*******" % page

for item in item_list:

self.write_file("page:" + str(page) + ':' + item)

# main

if __name__ == '__main__':

print '''

********************==

段子小爬蟲

********************==

'''print u'請按下回車開始'

raw_input()

# 定義乙個spider物件

myspider = spider()

# 第 1 頁 到 第 72 頁

for i in range(1, 73):

html = myspider.load_page(i)

items = myspider.page_to_list(html)

myspider.print_page(items, i)

效果如圖所示

網路段子爬蟲程式加強版 Scrapy框架

太多,有近100行 還有複雜的正規表示式。光是構造正規表示式就已經讓人抓狂了。1.不用構造複雜的正規表示式。2.爬取效率更高。3.邏輯更優更簡潔。git github.com cuanboy scrapytest.git本文參考了以下資料 urllib2庫的基本使用 傳智播客黑馬社群 scrapy菜...

爬蟲 內涵段子

import urllib2 import urllib import re class spilder def init self self.page 1 初始頁是1 self.switch true 如果是true就開始爬 def loadpage self url str self.page ...

6 內涵段子 爬蟲

內涵段子爬蟲實戰 要求 能爬取一頁資料即可 proxyhandler處理器 設定 很多 會檢測某一段時間某個ip的訪問次數 通過流量統計,系統日誌等 如果訪問次數多的不像正常人的訪問,它會禁止這個ip的訪問。所以我們可以設定一些 伺服器,每隔一段時間換乙個 就算ip被禁止,依然可以換個ip繼續爬取。...