本文參考了以下資料
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繼續爬取。...