Python爬蟲學習稿(三)

2021-07-09 10:35:33 字數 2726 閱讀 2553

一、資料結構

我們必須知道,乙個網頁上存在許多鏈結,並且如果已經爬取過的頁面是不需要再重複進行爬取的,那麼爬蟲就需要判斷,①這個頁面是否曾經被爬取過②頁面上的這些鏈結爬取的順序

解決問題一:

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 ...