基於python爬蟲的簡單實現

最近做實驗需要從網上搜集一些數據集,於是簡單的學習了一下Python爬蟲。記錄在此,也便於自己複習吧。

1.概述:關於爬蟲

衆所周知,爬蟲即從網上獲取圖片,文本,視頻等數據信息。在學習爬蟲之前先來了解一下爬蟲的三個分類。
1, 爬取網頁,小規模,數據量小,對爬取速度要求不高,通常使用的工具:requests庫。佔據爬蟲的90%以上。
2, 爬取網站,中規模, 爬取速度敏感 使用的工具:Scrapy庫。
3, 爬取全網,大規模, 爬取速度關鍵,定製開發。
所以這裏作爲簡單入門案例,僅僅講述requests庫的用法。

2.使用Requests庫爬取網頁

最常用的requests的方法是requests.get() , 和requests.request()方法,其實兩種方法都能達到同樣的效果,簡單起見這裏只介紹如何使用get()方法爬取網頁信息。
get方法網絡爬蟲基本流程

  1. 先指定要爬取的網址
    url = “http://www.baidu.com
  2. 調用request.get()方法, 傳入網址,這裏是url, 返回的是一個response對象(包含了網頁的信息),是不是非常簡單呢!
    r = requests.get(url)
  3. 查看狀態碼, 直接調用r.status_code, 結果爲200表示鏈接成功,最常見的404是找不到網頁,當然還有別的錯誤代碼,反正這裏只要結果是200就表示鏈接成功。
    r.status_code
  4. 指定解碼方式:r.encoding = r.apparent_encoding, 可以使用r.encoding來查看所爬取的網頁的編碼信息, 使用上面這句代碼來指定解碼方式, r.apparent_encoding(應該使用哪種編碼顯示),又稱備選編碼方式。總之可以將網頁解碼成可讀的。
  5. 打印出網頁的信息。 print(t.text)

3. 爬蟲的兩個簡單實例

  1. 下面給出一段標準的代碼框架供大家參考:
#首先肯定是導入requests庫
import requests
# 通用標準代碼塊使得用戶爬取網頁的效果更加穩定
def getHtmlText(url):
    # 網絡鏈接有風險,異常處理很重要
    try:
        # 發起一個request,得到一個response
        r = requests.get(url, timeout=30)
        # 鏈接的狀態嗎如果不是200將會引發異常
        r.raise_for_status()
        # 改變編碼格式,使得網絡可以顯示
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "產生異常"

if __name__ == '__main__':
    url = "http://www.baidu.com"
    #打印網頁信息
    print(getHtmlText(url))
    

  1. 下面是一個爬取圖片並且保存的實例。注意網絡上圖片的地址是右鍵,然後複製圖片的地址。
#還是先導入request庫, 和os模塊
import requests
import os
url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1542003261001&di=07b574ec8afee2f33d92f21b5a33e563&imgtype=0&src=http%3A%2F%2Fimg.wzrb.com.cn%2Farticlefile%2F20181023%2F20181023159349.jpg"
#保存圖片的目錄
root = "imgs/"
#圖片的路徑,名稱是a.jpg,可以改成別的
path = root + "a.jpg"
try:
#目錄不存在的話會創建目錄
    if not os.path.exists(root):
        os.makedirs(root)
   # 圖片不存在的情況下才會爬取圖片
    if not os.path.exists(path):
        r = requests.get(url)
        with open(path, "wb") as f:
            f.write(r.content)
            f.close()
            print("文件保存成功")
    else:
        print("文件已經存在")
except:
    print("爬取失敗")

好了,這就是一個簡單的爬取圖片的代碼,可以說是十分簡單了。今天先到這裏,實驗室大爺要關門了。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章