目錄
三、Requests庫爬取實例
1、實例1:京東商品頁面的爬取
# 實例1:京東商品頁面的爬取
import requests
r = requests.get("http://item.jd.com/2967929.html")
r.status_code
print(r.status_code)
r.encoding # 編碼。
print(r.encoding)
r.text[:1000] # 爬取前1000個字符。
print(r.text[:1000])
# 全代碼
import requests
url = "http://item.jd.com/2967929.html"
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失敗")
2、實例2:亞馬遜商品頁面的爬取
# 實例2:亞馬遜商品頁面的爬取
import requests
r = requests.get("http://www.amazon.cn/gp/product/B01M8L5Z3Y")
r.status_code
print(r.status_code)
r.encoding # 編碼。
print(r.encoding)
r.encoding = r.apparent_encoding
r.text
print(r.text)
r.request.headers # 獲取頁面頭部信息。
print(r.request.headers)
kv = {'user-agent': 'Mozilla/5.0'} # 標準的瀏覽器身份標識
url = "http://www.amazon.cn/gp/product/B01M8L5Z3Y"
r = requests.get(url, headers=kv) # 模擬瀏覽器訪問
r.status_code
print(r.status_code)
r.request.headers # 獲取頁面頭部信息。
print(r.request.headers)
r.text[:1000] # 爬取前1000個字符。
print(r.text[:1000])
# 全代碼
import requests
url = "http://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
kv = {'user-agent': 'Mozilla/5.0'} # 標準的瀏覽器身份標識
r = requests.get(url, headers=kv) # 模擬瀏覽器訪問
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[1000:2000])
except:
print("爬取失敗")
3、實例3:百度/360搜索關鍵詞提交
搜索引擎關鍵詞提交接口:
①百度的關鍵詞接口: http://www.baidu.com/s?wd=keyword。
②360的關鍵詞接口: http://www.so.com/s?q=keyword。
# 實例3:百度/360搜索關鍵詞提交
import requests
kv = {'wd': 'Python'}
r = requests.get("http://www.baidu.com/s", params=kv)
r.status_code
print(r.status_code)
r.request.url
print(r.request.url)
len(r.text)
print(len(r.text))
# 百度搜索全代碼
import requests
keyword = "Python"
try:
kv = {'wd': keyword}
r = requests.get("http://www.baidu.com/s", params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失敗")
# 360搜索全代碼
import requests
keyword = "Python"
try:
kv = {'q': keyword}
r = requests.get("http://www.so.com/s", params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失敗")
4、實例4:網絡圖片的爬取和存儲
網絡圖片鏈接的格式:http://www.example.com/picture.jpg。
國家地理:http://www.nationalgeographic.com.cn/。
選擇一個圖片Web頁面:http://www.nationalgeographic.com.cn/photography/photo_of_the_day/3921.html。
# 實例4:網絡圖片的爬取和存儲
import requests
path = "./photo/abc.jpg"
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
r = requests.get(url)
r.status_code
print(r.status_code)
with open(path, 'wb') as f:
f.write(r.content)
f.close()
# 圖片爬取全代碼
import requests
import os
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
root = "H://python//Web crawler//photo//"
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) # r.content表示返回內容的二進制形式,圖片是以二進制形式存儲的。
f.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失敗")
5、實例5:IP地址歸屬地的自動查詢
IP查詢:http://m.ip138.com/ip.asp?ip=ipaddress。
備註:網頁(http://m.ip138.com/ip.asp?ip=ipaddress)連接失敗,請讀者更換成自己的網頁。
# 實例5:IP地址歸屬地的自動查詢
# import requests
#
# url = "http://m.ip138.com/ip.asp?ip=ipaddress"
# r = requests.get(url + '202.204.80.112')
# r.status_code
# print(r.status_code)
# r.text[-500:]
# print(r.text[-500:])
#
# # IP地址查詢全代碼
# import requests
#
# url = "http://m.ip138.com/ip.asp?ip=ipaddress"
# try:
# r = requests.get(url + '202.204.80.112')
# r.raise_for_status()
# r.encoding = r.apparent_encoding
# print(r.text[-500:])
# except:
# print("爬取失敗")