1. 程式人生 > 實用技巧 >爬蟲3-python爬取非結構化資料下載到本地

爬蟲3-python爬取非結構化資料下載到本地

urlretrieve方法

通過上節爬蟲2,可以將結構化資料存入mysql等資料庫,但指令碼中還存在非結構化資料:

# print(content.xpath('//*[@dd_name="大圖"]/img/@src').pop())   # 圖片

python的urlretrieve方法可實現將遠端資料下載本地:

#url              下載連結
#filename         指定儲存本地路徑檔名
#reporthook       回撥函式,預設預設
#data             post到伺服器的資料,預設預設
urlretrieve(url, filename=None, reporthook=None, data=None)

實踐

# coding=utf-8
import requests
from lxml import etree

# 1爬取網頁資訊
url = 'http://product.dangdang.com/29148702.html'
headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/69.0.3497.81 Safari/537.36 Maxthon/5.3.8.2000 "
    }
aa 
= requests.get(url, headers=headers) message = aa.content.decode('gbk') content = etree.HTML(message) # message是str格式,需要先轉成HTML格式 # 1.2解析圖片資訊 print(content.xpath('//*[@dd_name="大圖"]/img/@src').pop()) # 圖片
#執行結果
http://img3m2.ddimg.cn/33/28/29148702-1_w_23.jpg
# 這時用urlretrieve來處理,可以下載到本地當前目錄下
url_img=content.xpath('//*[@dd_name="大圖"]/img/@src').pop() urllib.request.urlretrieve(url_img,"test_img.jpg")