《Python網絡爬蟲與信息提取》第一週 網絡爬蟲之規則 學習筆記(三)Requests庫爬取實例

目錄

三、Requests庫爬取實例

1、實例1:京東商品頁面的爬取

2、實例2:亞馬遜商品頁面的爬取

3、實例3:百度/360搜索關鍵詞提交

4、實例4:網絡圖片的爬取和存儲

5、實例5:IP地址歸屬地的自動查詢


三、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("爬取失敗")

 

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