Request庫實(shí)戰(zhàn)
[TOC]
實(shí)例1:京東商品頁面爬取
例如我們爬取最新的榮耀V20信息,目前僅僅是將HTML內(nèi)容爬取下來
V20京東地址為:https://item.jd.com/39167157921.html
導(dǎo)入requests庫 - 輸入url - 爬取html
import requests
try:
r = requests.get('https://item.jd.com/39167157921.html')
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print('爬取失敗')
結(jié)果為
'<!DOCTYPE HTML>\n<html lang="zh-CN">\n<head>\n <!-- shouji -->\n <meta http-equiv="Content-Type" content="text/html; charset=gbk" />\n <title>華為(HUAWEI) 榮耀v20手機(jī) 魅海藍(lán) 8+128G 全網(wǎng)通【圖片 價(jià)格 品牌 報(bào)價(jià)】-京東</title>\n <meta name="keywords" content="華為(HUAWEI) 榮耀v20手機(jī) 魅海藍(lán) 8+128G 全網(wǎng)通,華為(HUAWEI),,京東,網(wǎng)上購物"/>\n <meta name="description" content="華為(HUAWEI) 榮耀v20手機(jī) 魅海藍(lán) 8+128G 全網(wǎng)通圖片椭迎、價(jià)格系吭、品牌樣樣齊全!【京東正品行貨,全國(guó)配送手形,心動(dòng)不如行動(dòng),立即購買享受更多優(yōu)惠哦悯恍!】" />\n <meta name="format-detection" content="telephone=no">\n <meta http-equiv="mobile-agent" content="format=xhtml; url=//item.m.jd.com/product/39167157921.html">\n <meta http-equiv="mobile-agent" content="format=html5; url=//item.m.jd.com/product/39167157921.html">\n <meta http-equiv="X-UA-Compatible" content="IE=Edge">\n <link rel="canonical" />\n <link rel="dns-prefetch" />\n <link rel="dns-prefetch" />\n <link rel="dns-prefetch"
實(shí)例2:亞馬遜商品頁面爬取
? 為什么要用Amazon呢库糠,因?yàn)樗木W(wǎng)站加入了反扒機(jī)制,會(huì)檢測(cè)用戶域涮毫,如果是爬蟲則會(huì)拒絕訪問瞬欧,因此需要修改user-agent域來偽裝成瀏覽器
import requests
url = 'https://www.amazon.cn/dp/B07746N2J9/ref=br_bsl_pdt-1?pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=desktop-bestsellers-1&pf_rd_r=3XP0DWDNGYDFH219T9HY&pf_rd_r=3XP0DWDNGYDFH219T9HY&pf_rd_t=36701&pf_rd_p=546d17f0-7c03-421a-b79c-845e0ff4f521&pf_rd_p=546d17f0-7c03-421a-b79c-845e0ff4f521&pf_rd_i=desktop'
try:
kv = {'user-agent':'Mozilla/5.0'} #Chrome works too
r = requests.get(url, headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[1000:2000])
except:
print('爬取失敗')
實(shí)例3:百度關(guān)鍵字提交
百度關(guān)鍵字url接口:
https://www.baidu.com/s?wd=keyword
這是一個(gè)關(guān)鍵字的情況罢防,前面提到params參數(shù)可以添加參數(shù)到url黍判,所以通過添加參數(shù)params來添加搜索關(guān)鍵詞,而關(guān)鍵詞的鍵值對(duì)是以wd=value出現(xiàn)
import requests
keyword = 'Python'
try:
kv = {'wd':keyword}
r = requests.get('baidu.com/s',params=kv)
print(r.request.url)
r.raise_for_status()
print(len(t.text))
except:
print('Failed')
實(shí)例4:網(wǎng)絡(luò)圖片的爬取和存儲(chǔ)
? 網(wǎng)絡(luò)圖片的爬取首先要取得圖片鏈接的格式篙梢,使用get取得二進(jìn)制數(shù)據(jù)后,使用write函數(shù)wb二進(jìn)制寫入
國(guó)家地理圖片爬取
試一試中國(guó)國(guó)家地理的圖片http://img0.dili360.com/ga/M01/34/17/wKgBy1SzO_SAeNc3AA6kjU76gRY482.tub.jpg
url最后的一段是文件的名稱和格式
import requests
import os
url = 'http://img0.dili360.com/ga/M01/34/17/wKgBy1SzO_SAeNc3AA6kjU76gRY482.tub.jpg'
root = 'D://pics//'
path = root + url.split('/')[-1]
try:
if not os.path.exists(root):
os.mkdir(root) #創(chuàng)建文件夾
if not os.path.exists(path):
r = requests.get(url)
with open(path, 'wb') as f:
f.write(r.content) #二進(jìn)制文件美旧,用content返回信息
print('File Saved')
else:
print('File existed')
except:
print('Download Faild')
漂亮~
img