urllib
Urllib是 python 內置的庫,在 Python 這個內置的 Urllib 庫中有這麼 4 個模塊css
request:request模塊是咱們用的比較多的,就是用它來發起請求,因此咱們重點說說這個模塊html
error:error模塊就是當咱們在使用 request 模塊遇到錯了,就能夠用它來進行異常處理python
parse:parse模塊就是用來解析咱們的 URL 地址的,好比解析域名地址啦,URL指定的目錄等git
robotparser:這個用的就比較少了,它就是用來解析網站的 robot.txtgithub
瞭解了 urllib 以後
咱們就能夠用 python 代碼來模擬請求了
web
Requests這個庫比咱們上次說的 urllib 但是要牛逼一丟丟的,畢竟 Requests 是在 urllib 的基礎上搞出來的。經過它咱們能夠用更少的代碼模擬瀏覽器操做。
對於不是 python 的內置庫,咱們須要安裝一下,直接使用 pip 安裝正則表達式
pip install requests
一行代碼 Get 請求chrome
r = requests.get('https://www.sina.com.cn/')
一行代碼 Post 請求瀏覽器
r = requests.post('https://www.sina.com.cn/', data = {'key':'value'})
僞裝本身是瀏覽器服務器
>>> url = 'https://www.sina.com.cn/' >>> headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3620.400'} >>> r = requests.get(url, headers=headers)
獲取服務器響應文本內容
>>> import requests >>> r = requests.get('https://www.sina.com.cn/') >>> r.textBeautifulSoup
利用正則表達式去提取信息太特麼麻煩了
有沒有什麼別的方式更方便過濾咱們想要的內容啊
emmmm~
你還別說還真有有一個高效的網頁解析庫它的名字叫作
BeautifulSoup
它是一個能夠從 HTML 或 XML 文件中提取數據的 Python 庫
首先咱們要安裝一下這個庫
pip install beautifulsoup4
beautifulsoup支持不一樣的解析器
好比
對 HTML 的解析
對 XML 的解析
對 HTML5 的解析
通常狀況下咱們用的比較多的是 lxml 解析器,咱們先來使用一個例子讓你體驗一下beautifulsoup 的一些經常使用的方法
先安裝一下
pip install beautifulsoup4 pip install lxml
接着將 html 的源代碼傳給 BeautifulSoup
此時此刻就不須要本身寫正則匹配了
咱們要作的就是從這個對象直接獲取咱們要的內容,獲取標題的內容
好比咱們有這樣一段HTML代碼
接着將 html 的源代碼傳給 BeautifulSoup,此時此刻就不須要本身寫正則匹配了,咱們要作的就是從這個對象直接獲取咱們要的內容獲取標題的內容
而後咱們能夠獲取標籤內容,連接內容以及文本內容
除了find方法以外,若是你對css比較熟悉也可使用 select 方法
什麼是 selenium ?其實它就是一個自動化測試工具,支持各類主流的瀏覽器,遇到了 python,selenium 變成了爬蟲利器咱們先來安裝一下
pip install selenium
接着咱們下載Chrome驅動
Chrome: | https://sites.google.com/a/chromium.org/chromedriver/downloads |
Edge: | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ |
Firefox: | https://github.com/mozilla/geckodriver/releases |
Safari: | https://webkit.org/blog/6900/webdriver-support-in-safari-10/ |
接着咱們來嘗試一下代碼
咱們發現自動彈出了一個Chrome瀏覽器窗口
哇,好神奇,能夠看到它本身打開了 Chrome 瀏覽器,訪問了百度而且搜索了波多野結衣的照片
這就是 selenium 的魅力
咱們來看下咱們剛剛寫的代碼
就這樣完成了一次自動的百度搜索
當咱們使用驅動打開了一個頁面,這時候其實沒什麼鳥用,由於咱們要對那些元素進行操做
就像剛剛咱們要獲取輸入框而後輸入一些內容還有獲取按鈕點擊什麼的,selenium 提供了挺多方法給咱們獲取的,當咱們要在頁面中獲取一個元素的時候可使用這些方法。
想要在頁面獲取多個元素呢
就能夠這樣