Python爬蟲之一

2022-09-11 19:48:13 字數 4902 閱讀 1902

1. 爬蟲的選取:scrapy和requests+beautifuisoup

scrapy是框架,而requests和beautifulsoup是庫。scrapy框架是可以加如requests和beautifulsoup庫的,而scrapy是基於twisted,效能是最大的優勢。scrapy方便擴充套件,提供很多內建的功能。scrapy內建的css和xpath selector非常方便,beautifulsoup就是有點慢。

2.常見網頁分類

靜態網頁,動態網頁、webservice

3.爬蟲能做什麼

2)推薦引擎---今日頭條

3)機器學習的資料樣本

4)資料分析(如金融資料分析)、輿情分析等

4.正規表示式

1)特殊字元(^)

**:import re

"""1)^"必須是^後面的字元"

2) .是除了\n的任意字元

3) *是乙個限定符,用來修飾前乙個字元或分組,限定匹配重複的數量為任意數量。

"""#」^「、」.「、」×「測試

test_str = "zzbaby"

reg_str = "^b.*"

if re.match(reg_str,test_str):

print("yes")

else:

print("no")

結果:no 

2)特殊字元($)

**:

"""

1)$"表示必須有以$前面的字元結尾"

"""reg_str_1 = ".*y$"

if re.match(reg_str_1,test_str):

print("yes")

else:

print("no")

結果:yes

3)特殊字元(?)

**:

"""

1)?表示非貪婪模式

"""

test_str = "zbbbbbbzzbaby"
reg_str_2 = ".*?(z.*?z).*"#?表示從左邊開始匹配遇到第乙個z就開始進入匹配第二個?表示不要貪婪太多隻需要匹配遇到第二個z就結束

if re.match(reg_str_2,test_str):

print(re.match(reg_str_2,test_str).group(1))#表示提取第一次符合reg_str_2的字元,正規表示式是反向匹配的

else:

print("error")

結果:zbbbbbbz

4)特殊字元+

**:

"""

1)+是乙個限定符,用來修飾前乙個字元或分組,限定匹配重複的數量至少為一次數量。

"""reg_str_3 = "(.+.*)"#正規表示式預設是貪婪模式

if re.match(reg_str_3,test_str):

print(re.match(reg_str_3,test_str).group(1))#表示提取第一次符合reg_str_2的字元,正規表示式是反向匹配的

else:

print("error")

結果:zbbbbbbzzbaby

5)特殊字元{}

**:

"""

1)表示大括號裡面出現的數字是前面出現的次數

2)表示大括號數值以上的次數

3)表示2次以上5次以下

"""reg_str_4 ="(..)"#表示出現前兩個字元

reg_str_5= "(.+b)"#表示b前面要至少有乙個字元後匹配2個以上的b

reg_str_6= "(.+b)"#表示b前面要至少有乙個字元後匹配1個以上的b,6個以下的b

print(re.match(reg_str_4,test_str).group(1))#表示列印前兩個字元

print(re.match(reg_str_5,test_str).group(1))#表示兩次以上的字元,由於貪婪所以會列印最長

print(re.match(reg_str_6,test_str).group(1))#列印的是在b之前至少存在1個字元而且b出現的次數在1次以上6次以下

結果:

zbb

zbbbbbb

zbbbbbb

6)特殊字元|

**:

"""

1)表示或者的意思

"""reg_str_7 = "(zz|zb)"#提取zz或者zb優先左邊列印

print(re.match(reg_str_7,test_str).group(1))#group中的數字代表的是括號的層數,常常用於提取子字串

結果:zb

7)特殊字元

**:"""

1)相當於只能輸入中的字元

2)有一種使用方法[0-9]只能輸入0-9之間的資料

3)還有一種使用方法[^1]表示只能輸入不是1的資料

"""#的前一種使用方式

print("請輸入乙個**號碼:")

#test_str = input()

reg_str_1 ="1[3578][0-9]"#表示第二位只能輸入3、5、8、7的數值,[0-9]則表示輸入1-9之間的資料

if re.match(reg_str_1,test_str):

print(test_str)

else:

print("error")

#[^]的使用方法

print("輸入乙個最後不為1的**號碼:")

test_str = input()

reg_str_1 ="1[3578][0-9][^1]"#表示第二位只能輸入3、5、8、7的數值,[0-9]則表示輸入1-9之間的資料,最後一位不能為1

if re.match(reg_str_1,test_str):

print(test_str)

else:

print("error")

輸出:請輸入乙個**號碼:

error

輸入乙個最後不為1的**號碼:

15837140221

error

8)特殊字元\s

**:

"""

1)\s表示匹配乙個空格

2)\s表示只要不是空格都可以

3)\w表示任意乙個字元都可以[a-za-z0-9_]都可以

4)\w表示與\w相反

"""#\s的作用

test_str ="你 好"#漢字

test_str_1 ="hh aa"#英文

reg_str_8 ="你\s好"

reg_str_9 = "hh\saa"

if re.match(reg_str_8,test_str):

print(test_str)

if re.match(reg_str_9,test_str_1):

print(test_str_1)

else:

print("error")

#\s的作用與\s的作用相反

test_str ="hhsaa"#英文

reg_str_10 = "hh\saa"

if re.match(reg_str_10,test_str):

print(test_str)

else:

print("error")

#\w的使用方式

test_str ="hh@aa"#英文

reg_str_11 = "hh\waa"#\w相當於[a-za-z0-9_]

if re.match(reg_str_11,test_str):

print(test_str)

else:

print("error")

#\w的使用方式與\w相反

test_str ="hh@aa"#英文

reg_str_12 = "hh\waa"#\w相當於[a-za-z0-9_]相反

if re.match(reg_str_12,test_str):

print(test_str)

else:

print("error")

輸出結果:

你 好

hh aa

hhsaa

error

hh@aa

9)特殊字元[\u4e00-\9fa5]

**:

"""

1)[\u4e00-\u9fa5]只識別漢字

"""test_str ="你好"#漢字

reg_str_13 = "[\u4e00-\u9fa5]+"

if re.match(reg_str_13,test_str):

print(test_str)

else:

print("error")

執行結果:

你好10)特殊字元\d

**:

"""

1)\d代表的數字

"""test_str = "aaaaaa123"

reg_str_13 = ".*(.+[2]\d).*"#提起123

if re.match(reg_str_13,test_str):

print(re.match(reg_str_13,test_str).group(1))

else:

print("error")

結果:123

Python爬蟲簡述系列之一

根據使用場景,網路爬蟲可分為通用爬蟲和聚焦爬蟲兩種.搜尋引擎網路爬蟲的基本工作流程如下 1,首先選取一部分的種子url,將這些url放入待抓取url佇列 3,分析已抓取url佇列中的url,分析其中的其他url,並且將url放入待抓取url佇列,從而進入下乙個迴圈 在其他 上設定新 外鏈 盡可能處於...

python爬蟲之一 基本架構

排程器 呼叫其他元件,並控制目標資料輸出 url管理器 儲存待爬取 已爬取url,要防止爬取重複的url 網頁解析器 解析html頁面中的文字資訊,獲取目標資料和新的url鏈結 2.2.1 功能 維護待爬取集合和已爬取集合 判斷得到的url是否已爬取 將新的url新增到待爬取集合 判斷待爬取集合是否...

python爬蟲甲殼 python爬蟲(一)

一 http協議 1.基本概念 http,hypertext transfer transfer peotocol,超文字傳輸協議 http是乙個基於 請求與響應 模式的 無狀態的應用層協議 http協議採用url作為定位網路資源的標識,url格式如下 port 埠號,預設埠為80 path 請求資...