python之路之python爬蟲

2021-06-19 03:07:58 字數 2118 閱讀 1541

一.將鏈結url原始碼讀出,將其作為列表輸出

二.使用正規表示式將原始碼中有關的原始碼篩選出來,(*.jpg檔案)

三.在輸出的過程中按照自己的方式命名

這裡邊唯一的難點恐怕是正規表示式的書寫,下面我們初步系統的講解一下正規表示式:

前面有一講專門介紹了正規表示式

, 具體可以檢視鏈結,這裡只進行一些重要的補充。

如上,\b可以控制開頭和結尾,這種可以用來匹配整個單詞而不只是其中的一部分

雖然之前的正規表示式已經描述,這裡在熟悉一下:『.』匹配除了換行符的任意字元,注意不包含換行符,『*』也是元字元,它代表的既不是字元也不是位置,而是數量

因此.*意味著任意數量的不包含換行的字元,如上\bhi\b.*\blucy\b,這裡表示開頭為hi,結尾為lucy,中間為任意多個字元(可以沒有)

總結:+:重複一次或更多次

?:重複0次或者一次

:重複n次

:重複n次或更多次

:重複n到m次

如上可以看出?和\d{}等的用法,但是也可以看出這種**號碼匹配是有問題的(半括號也可以匹配成功)

分支條件:

是指n種方式並列,從左向右進行匹配,當第一種情況不匹配成功時就匹配第二種,,使用'|'符號,以此類推

如上是兩種情況,一種是有括號的一種是沒有括號的,但是注意以下特別情況:

\d-\d|\d

\d|\d-\d

如上兩個匹配的過程是不同的,如果是前者,先匹配約束強的,如果不能匹配,才進入\d。但是後者相反,因此一般情況下我們採用前者

分組技術:

匹配最少重複:

正規表示式的特點是貪心法的思想,即通常的行為是匹配盡可能多的字元,如a.*b,它將會匹配最長的以a開頭以b結尾的字串。如aabab則會匹配出aabab

那麼如何匹配盡可能少的字元呢:

答案是使用.*?,如下:

他會匹配aab和ab,注意第乙個為什麼不匹配ab呢?因為正規表示式中最先開始的匹配有最高的優先順序。

總結:

*?重複任意次,但盡可能少重複

+?重複一次或多次,但盡可能少重複

??重複0次或1次,但盡可能少重複

?重複n次到m次,但盡可能少重複

注釋:

?#comment

2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)

後向引用:

如上\1表示分組內的項,兩個完整的單詞中間夾著空白字元即可(空白字元可以是空格、tab等)

python小菜的學習之路之python初識

筆者介紹 本文python初學者,因為名字內帶xiong,因此自嘲 熊小菜 熊小菜因為在解決課題問題時,接觸到過多的python,這對於乙個c 程式設計師而言是鬱悶的,此處,引用一句名言 既然你改變不了環境,那就學會適應它 因此,熊小菜開始進行python的學習,希望終有一天從熊小菜轉變成熊小神。話...

Python之路之socket陷阱

在kali的shell裡面寫python 寫一段小指令碼,執行卻發現各中錯誤 經過多次嘗試,原來是目標的埠連線失敗導致,而不是 的錯 驗證 usr bin python import socket socket.setdefaulttimeout 2 s socket.socket try s.co...

python 課後作業 python之路之課後作業

usr bin env python coding utf 8 importsysimportos teacher list pickle.load open setting.teacher db dir,rb for num,item in enumerate teacher list,1 pri...