Python 網路爬蟲的常用庫彙總及應用
Python 網路爬蟲的常用庫彙總
爬蟲的程式語言有不少,但 Python 絕對是其中的主流之一。今天就為大家介紹下 Python 在編寫網路爬蟲常常用到的一些庫。
請求庫:實現 HTTP 請求操作
urllib:一系列用於操作URL的功能。
requests:基於 urllib 編寫的,阻塞式 HTTP 請求庫,發出一個請求,一直等待伺服器響應後,程式才能進行下一步處理。
selenium:自動化測試工具。一個呼叫瀏覽器的 driver,通過這個庫你可以直接呼叫瀏覽器完成某些操作,比如輸入驗證碼。
aiohttp:基於 asyncio 實現的 HTTP 框架。非同步操作藉助於 async/await 關鍵字,使用非同步庫進行資料抓取,可以大大提高效率。
解析庫:從網頁中提取資訊
beautifulsoup:html 和 XML 的解析,從網頁中提取資訊,同時擁有強大的API和多樣解析方式。
pyquery:jQuery 的 Python 實現,能夠以 jQuery 的語法來操作解析 HTML 文件,易用性和解析速度都很好。
lxml:支援HTML和XML的解析,支援XPath解析方式,而且解析效率非常高。
tesserocr:一個 OCR 庫,在遇到驗證碼(圖形驗證碼為主)的時候,可直接用 OCR 進行識別。
從基礎的python指令碼到web開發、爬蟲、資料分析、資料視覺化、機器學習、面試真題等。想要的可以進群:688244617免費領取學習資料
儲存庫:Python 與資料庫互動
pymysql:一個純 Python 實現的 MySQL 客戶端操作庫。
pymongo:一個用於直接連線 mongodb 資料庫進行查詢操作的庫。
redisdump:一個用於 redis 資料匯入/匯出的工具。基於 ruby 實現的,因此使用它,需要先安裝 Ruby。
爬蟲框架
Scrapy:很強大的爬蟲框架,可以滿足簡單的頁面爬取(比如可以明確獲知url pattern的情況)。用這個框架可以輕鬆爬下來如亞馬遜商品資訊之類的資料。但是對於稍微複雜一點的頁面,如 weibo 的頁面資訊,這個框架就滿足不了需求了。
Crawley:高速爬取對應網站的內容,支援關係和非關聯式資料庫,資料可以匯出為 JSON、XML 等。
Portia:視覺化爬取網頁內容。
newspaper:提取新聞、文章以及內容分析。
python-goose:java 寫的文章提取工具。
cola:一個分散式爬蟲框架。專案整體設計有點糟,模組間耦合度較高。
Web 框架庫
flask:輕量級的 web 服務程式,簡單,易用,靈活,主要來做一些 API 服務。做代理時可能會用到。
django:一個 web 伺服器框架,提供了一個完整的後臺管理,引擎、介面等,使用它可做一個完整網站。
-
Re庫的基本使用
Re庫介紹:
Re庫是Python的標準庫,主要用於字串匹配。 呼叫方式:import re
正規表示式的表示型別:
raw string型別(原生字串型別): re庫採用raw string型別表示正規表示式,表示為:r'text' 例如:r'[1-9]\d{5}' raw string是指不包含轉義符的字串 string型別,更繁瑣。 例如:'[1-9]\\d{5}';'\\d{3}-\\d{8}|\\d{4}-\\d{7}'
當正規表示式包含轉義符時,建議使用raw string型別來表示正規表示式。
Re庫主要功能函式:
函式
說明
re.search()
在一個字串中搜尋匹配正規表示式的第一個位置,返回match物件
re.match()
從一個字串的開始位置起匹配正規表示式,返回match物件
re.findall()
搜尋字串,以列表型別返回全部能匹配的字串
re.split()
將一個字串按照正規表示式匹配結果進行分割,返回列表型別
re.finditer()
搜尋字串,返回一個匹配結果的迭代型別,每個迭代元素是match物件
re.sub()
在一個字串中替換所有匹配正規表示式的子串,返回替換後的字串
re.compile() 返回的是一個匹配物件,它單獨使用就沒有任何意義,需要和findall(), search(), match()搭配使用。
re.search(pattern,string,flags=0)
在一個字串中搜尋匹配正規表示式的第一個位置,返回match物件。
pattern:正規表示式的字串或原生字串表示
string:待匹配字串
flags:正規表示式使用時的控制標記
re.I(re.IGNORECASE):忽略正規表示式的大小寫,[A-Z]能夠匹配小寫字元
re.M(re.MULTILINE):正規表示式中的^操作符能夠將給定字串的每行當作匹配開始
re.S(re.DOTALL):正規表示式中的.操作符能夠匹配所有字元,預設匹配除換行外的所有字元****!!!!****
re.match(pattern, string, flags = 0)
從一個字串的開始位置起匹配正規表示式,返回match物件。
pattern:正規表示式的字串或原生字串表示
string:待匹配字串
flags:正規表示式使用時的控制標記
re.findall(pattern, string, flags = 0)
搜尋字串,以列表型別返回全部能匹配的子串。
pattern:正規表示式的字串或原生字串表示
string:待匹配字串
flags:正規表示式使用時的控制標記
re.split(pattern, string, maxsplit = 0, flags = 0)
搜尋字串,以列表型別返回全部能匹配的子串。
pattern:正規表示式的字串或原生字串表示
string:待匹配字串
maxsplit:最大分割數,剩餘部分作為最後一個元素輸出
flags:正規表示式使用時的控制標記
re.finditer(pattern, string, flags = 0)
搜尋字串,返回一個匹配結果的迭代型別,每個迭代元素是match物件。
pattern:正規表示式的字串或原生字串表示
string:待匹配字串
flags:正規表示式使用時的控制標記
re.compile()
compile()的定義:
compile(pattern, flags=0)
Compile a regular expression pattern, returning a pattern object.
從compile()函式的定義中,可以看出返回的是一個匹配物件,它單獨使用就沒有任何意義,需要和findall(), search(), match()搭配使用。
compile()與findall()一起使用,返回一個列表。
import re
def main():
content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
regex = re.compile('\w*o\w*')
x = regex.findall(content)
print(x)
if __name__ == '__main__':
main()
# ['Hello', 'from', 'Chongqing', 'montain', 'to', 'you']
compile()與match()一起使用,可返回一個class、str、tuple。但是一定需要注意match(),從位置0開始匹配,匹配不到會返回None,返回None的時候就沒有span/group屬性了,並且與group使用,返回一個單詞‘Hello’後匹配就會結束。
import re
def main():
content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
regex = re.compile('\w*o\w*')
y = regex.match(content)
print(y)
print(type(y))
print(y.group())
print(y.span())
if __name__ == '__main__':
main()
# <_sre.SRE_Match object; span=(0, 5), match='Hello'>
# <class '_sre.SRE_Match'>
# Hello
# (0, 5)
compile()與search()搭配使用, 返回的型別與match()差不多, 但是不同的是search(), 可以不從位置0開始匹配。但是匹配一個單詞之後,匹配和match()一樣,匹配就會結束。
re.sub(pattern, repl, string, count = 0, flags = 0)
在一個字串中替換所有匹配正規表示式的子串,返回替換後的字串。
pattern:正規表示式的字串或原生字串表示
repl:替換匹配字串的字串
string:待匹配字串
count:匹配的最大替換次數
flags:正規表示式使用時的控制標記
相關文章
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 網路爬蟲技術及應用爬蟲
- 聊聊 Python 的應用 - 健壯高效的網路爬蟲Python爬蟲
- 《用Python寫網路爬蟲》--編寫第一個網路爬蟲Python爬蟲
- 常用的 Python 爬蟲技巧總結Python爬蟲
- Python爬蟲:一些常用的爬蟲技巧總結Python爬蟲
- 用PYTHON爬蟲簡單爬取網路小說Python爬蟲
- GitHub 熱門:各大網站的 Python 爬蟲登入彙總Github網站Python爬蟲
- 【彙總】Python爬蟲常見面試題!Python爬蟲面試題
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- 網路爬蟲開發常用框架爬蟲框架
- 網路爬蟲流程總結爬蟲
- 什麼是網路爬蟲?為什麼用Python寫爬蟲?爬蟲Python
- 小白學python-爬蟲常用庫Python爬蟲
- python DHT網路爬蟲Python爬蟲
- 網路爬蟲在商業分析中的應用爬蟲
- 匿名IP在網路爬蟲中的應用探索爬蟲
- 什麼是Python網路爬蟲?常見的網路爬蟲有哪些?Python爬蟲
- Python 爬蟲模擬登入方法彙總Python爬蟲
- 用python語言編寫網路爬蟲Python爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- python爬蟲常用庫之requests詳解Python爬蟲
- python爬蟲常用庫之BeautifulSoup詳解Python爬蟲
- centos7下部署python網路爬蟲程式及django程式總結CentOSPython爬蟲Django
- 專案--python網路爬蟲Python爬蟲
- python網路爬蟲合法嗎Python爬蟲
- 網路爬蟲(python專案)爬蟲Python
- Python網路爬蟲實戰Python爬蟲
- Python網路爬蟲二三事Python爬蟲
- 4款常用的Python GUI庫彙總!PythonGUI
- Python網路爬蟲進階:自動切換HTTP代理IP的應用Python爬蟲HTTP
- MySQL:網際網路公司常用分庫分表方案彙總!MySql
- Python的Scrapy定製網路爬蟲Python爬蟲
- NodeJs 入門到放棄 — 常用模組及網路爬蟲(二)NodeJS爬蟲
- python網路爬蟲(9)構建基礎爬蟲思路Python爬蟲
- python網路爬蟲--爬取淘寶聯盟Python爬蟲