《Python網(wǎng)絡(luò)爬蟲》1.5 Requests庫(kù)使用實(shí)例

By 一頁(yè)編程


下面以幾個(gè)例子來熟悉一下Requests庫(kù)的使用,至于說怎么能夠從返回的信息中解析返回的內(nèi)容,那是我們后面將要講的內(nèi)容。

爬取京東商品頁(yè)面

這里面我們選取的是華為的一款手機(jī),看下面代碼:

import requests
url = "https://item.jd.com/3888278.html"
try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失敗")

上述代碼可以正常返回HTML數(shù)據(jù),比較簡(jiǎn)單,沒有任何問題。

百度搜索關(guān)鍵詞提交

百度搜索,大家都知道,有沒有可能用程序自動(dòng)的向這個(gè)搜索引擎提交個(gè)關(guān)鍵詞,并且獲得它的搜索結(jié)果呢?
我們?cè)诎俣入S便搜索一個(gè)關(guān)鍵詞,然后查看URL,可以很容易的得到百度搜索的接口:

http://www.baidu.com /s?wd= keyword

只要我們替換keyword就可以向搜索引擎提交關(guān)鍵詞了。下面我們用requests庫(kù)來實(shí)現(xiàn)這個(gè)代碼,以搜索”Python“關(guān)鍵詞為例。

import requests
keyword = "python"
url = "https://www.baidu.com/s"
try:
    kv = {'wd': keyword}
    r = requests.get(url, params = kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失敗")

其他搜索引擎和百度的搜索方法很類似,大家可以嘗試一下。

網(wǎng)絡(luò)圖片的爬取和存儲(chǔ)

首先,我們看一下網(wǎng)絡(luò)上圖片鏈接的格式。網(wǎng)絡(luò)上圖片鏈接基本都是這樣一個(gè)格式:

http://www.example.com/picture.jpg

比如我們隨便在網(wǎng)上找到一個(gè)圖片,右鍵點(diǎn)擊屬性,就可以看到圖片的真實(shí)地址:http://image.nationalgeographic.com.cn/2017/0403/20170403115136772.jpg

20170403115136772.jpg

我們?nèi)绾瓮ㄟ^圖片URL,把它保存到本地呢?
我們知道返回的圖片信息是一個(gè)二進(jìn)制格式文件,也就是Response對(duì)象的content屬性,我們把二進(jìn)制形式寫入到文件就可以了,下面看代碼:

import requests
path = "D:/picture.jpg"
url = "http://image.nationalgeographic.com.cn/2017/0403/20170403115136772.jpg"
r = requests.get(url)
with open(path, 'wb') as f:
    f.write(r.content)

通過這樣的方式,我們就把網(wǎng)上的圖片保存到了D盤,文件名為picture.jpg
這段代碼雖然可以實(shí)現(xiàn)我們的想法,但是有很多問題,比如沒有異常處理、文件沒有關(guān)閉、不能用原始文件名保存圖片等,下面我們給出優(yōu)化后的代碼:

import requests
import os
url = "http://image.nationalgeographic.com.cn/2017/0403/20170403115136772.jpg"
root = "D://pics//"
path = root + url.split('/')[-1]
try:
    if not os.path.exists(root):
        os.mkdir(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("爬取失敗")

事實(shí)上,除了圖片排序之外,網(wǎng)上有很多的資源,都是類似的url格式,比如說網(wǎng)上的一個(gè)視頻,比如說網(wǎng)上的一個(gè)音樂,比如說網(wǎng)上的一個(gè)動(dòng)畫等等,我們可以用這個(gè)代碼去修改,能夠獲取網(wǎng)絡(luò)上得很多的不同的資源。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容