一、資料結構
我們必須知道,乙個網頁上存在許多鏈結,並且如果已經爬取過的頁面是不需要再重複進行爬取的,那麼爬蟲就需要判斷,①這個頁面是否曾經被爬取過②頁面上的這些鏈結爬取的順序
解決問題一:
python自從2.3後提供了一種名為集合(set)的資料結構,和數學上的集合一樣,支援交、並、差等運算,set是一種無序且不包含重複元素的資料結構
所以我們可以把爬取過的url扔進集合中,然後對目前的url進行判定是否在集合中,如果存在即爬取過,便不再重複爬取
# encoding: utf-8
a = set('abracadabra')
b = set('alacazam')
print(a)
print(b)
c = a | b
print(c)
d = a - b
print(a-b)
e = a & b
print(e)
f = a ^ b
print(f)
可以得到如下結果
解決問題二:
python中提供雙端佇列(double-ended queue)簡稱deque,在collections模組中包含deque型別和defaultdict型別
# encoding: utf-8
from collections import deque
queue = deque(["txb", "hsx", "hxp"])
print(queue.popleft())
print(queue)
得到如下結果
txb
deque(['hsx', 'hxp', 'zyz', 'wcy'])
# encoding: utf-8
import urllib
import urllib.request
data = {}
data['word'] = 'one peace'
url_values = urllib.parse.urlencode(data)
url = ""
full_url = url+url_values
a = urllib.request.urlopen(full_url)
data = a.read()
data = data.decode('utf-8')
print(data)
# 列印出**:
a.geturl()
可以看出我們已經得到了,我們再嘗試通過google訪問一下
# encoding: utf-8
import urllib
import urllib.request
headers=
data = {}
data['q'] = 'one peace'
url_values = urllib.parse.urlencode(data)
url = ""
full_url = url+url_values
request = urllib.request.request(full_url, headers = headers)
a = urllib.request.urlopen(request)
data = a.read()
data = data.decode('utf-8')
print(data)
# 列印出**:
a.geturl()
三、正規表示式
原來我發過一篇讀書筆記《正規表示式必知必會》,是關於正規表示式最基礎的知識,這個部分著重講解python中的正規表示式(re模組)
re模組中一些重要的函式
compile(pattern[,flags]) 根據包含正規表示式的字串建立模式物件
re.compile將正規表示式轉換為模式物件,以實現更有效率的匹配
模式物件本身也有search和match函式,可以使用pat.search(string)
search(pattern, string[, flags]) 在字串中尋找模式
search會在給定字串中尋找第乙個匹配給定正規表示式的子字串
match(pattern, string[, flags]) 在字串的開始處匹配模式
match會在給定字串的開頭匹配正規表示式
split(pattern, string[, maxsplit=0]) 根據模式的匹配項來分割字串
split會根據模式的匹配項來分割字串,返回值是子字串的列表
findall(pattern, string) 列出字串中模式的所有匹配項
findall以列表形式返回給定模式的所有匹配項
sub(pat, repl, string[, count=0]) 將字串中所有pat的匹配項用repl替換
sub使用給定的替換內容將匹配模式的子字串替換掉
escape(string) 將字串中所有特殊正規表示式字元轉義
escape對字串中所有可能被解釋為正則運算子的字元進行轉義
在這裡我只是簡單介紹一下,正規表示式還得需要自己深入實踐才能有所收穫,關於一些常見的方法和引數,給出乙個部落格鏈結,大家去看他的文章
rlovep的部落格
Python 爬蟲學習稿(一)
本次學習的環境是基於python 3.3.5,實驗的工具是pycharm 5.0.1 基礎的知識我就不再介紹,比如http的基礎知識 爬蟲的相關背景 直接開始爬蟲的學習吧!常見的urllib2庫在python3.x的版本中改名啦!叫urllib.request了!urlopen 可以接收三個引數即u...
Python爬蟲學習筆記(三)
抓取w 上的 把這些儲存到乙個資料夾中 import requests if name main url text 字串 content 二進位制 json 物件 response requests.get url content w 以文字的方式寫入 wb 以二進位制的方式寫入 建立資料夾 os....
Python爬蟲學習 三 爬蟲的基本操作流程
一般我們使用python爬蟲都是希望實現一套完整的功能,如下 1.爬蟲目標資料 資訊 2.將資料或資訊存入資料庫中 3.資料展示,即在web端進行顯示,並有自己的分析說明。這次我先介紹第乙個功能中所需要實現的基本操作 匯入爬蟲所需要的庫 如 urllib urllib2 beautifulsoup ...