注意事項
import requests
from bs4 import BeautifulSoup
import urllib.request
base_path = '/Users/XXX/python/Swift/'
base_url = 'http://weheartit.com/inspirations/taylorswift?scrolling=true&page='
# 設定代理,網上百度下具體的IP即可。代理不太穩定,測試過程中,換了好幾個代理才成功
proxies = {'http':'http://121.42.178.60:1080'}
# 模擬登入
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
}
# 確定要爬取的頁數,並生成對應的url列表
def get_img_url(num):
# 定義一個空列表,存放要下載照片的url
img_urls = []
for page_num in range(1, num+1):
# 字串連線"+"
url = base_url + str(page_num)
web_data = requests.get(url, headers = headers, proxies = proxies)
if web_data.status_code == 200:
soup = BeautifulSoup(web_data.text, 'lxml')
imgs = soup.select('img.entry-thumbnail')
print(imgs)
for img in imgs:
img_urls.append(img.get('src'))
else:
print('伺服器異常')
print(len(img_urls), 'imgs should be downloaded')
return img_urls
def get_img(url):
img_name = base_path + url.split('/')[-2] + '.' + url.split('.')[-1] # split() 函式對url分割,獲取檔名
# 方法一:通過urllib.request.urlretrieve方式寫資料,失敗
# urllib.request.urlretrieve(url,img_name) # img_name表示圖片的路徑(資料夾的路徑+圖片的命名)
# 方法二
# 獲取到的圖片,如何轉為 二進位制 儲存到本地。content是二進位制格式的資料,text是自動根據 HTTP 響應頭部的編碼型別解碼為 unicode 的結果
img_data = requests.get(url, headers = headers, proxies = proxies)
with open(img_name, "wb") as fs:
fs.write(img_data.content)
for url in get_img_url(6):
get_img(url)
'''
1、非同步載入
通過 JS 實現動態載入資料,在與當前 HTML 頁面的載入並不一起進行,比如同時進行,或在載入完當前頁面後,在下拉頁面時載入,這是通過 JS 的 XHR 實現。
如果是通過 XHR 在當前頁面載入完後的非同步載入,可以chrome 瀏覽器中,右擊頁面-檢查-network-XHR,然後下拉頁面進行非同步載入,能夠看到載入的請求url、頭部和返回的動態資料。同時,在Elements中可以看到 HTML 元素在動態變化
2、請求的圖片儲存本地
獲取到的圖片,如何轉為 二進位制 儲存到本地。content是二進位制格式的資料,text是自動根據 HTTP 響應頭部的編碼型別解碼為 unicode 的結果
img_data = requests.get(img_url)
with open(str(img_name), 'wb') as f:
print type(img_data.content)
f.write(img_data.content)
3、黴黴的網站需要翻牆設定代理
4、關於圖片的格式型別:jpg、webp
WebP格式,谷歌(google)開發的一種旨在加快圖片載入速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節省大量的伺服器頻寬資源和資料空間。Facebook Ebay等知名網站已經開始測試並使用WebP格式。
但WebP是一種有失真壓縮。相較編碼JPEG檔案,編碼同樣質量的WebP檔案需要佔用更多的計算資源。
桌面版Chrome可開啟WebP格式。
'''