通過python 可以將圖片直接下載到本地,或者將圖片/MP3/視頻等資源的Url 路徑和名稱保存在數據庫中 。
這裏使用的是mysql 數據庫。在上傳到mysql的時候發現報錯:
Field 'id' doesn't have a default value
id 是序號,作爲主鍵。 在 insert into 數據庫中的時候並沒加id ,id不是自動增量 ,所以報錯,解決辦法:
mysql> CREATE TABLE `table1` ( -> `id` int(11) NOT NULL auto_increment, -> `create_time` datetime DEFAULT NULL, -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected
====================================================
mysql 上的數據:
========================================
下載到本地的資源:
===========================================
代碼:doutu_download.py
import requests
import re
import pymysql
import os
import urllib.request
# 連接數據庫
db = pymysql.connect(host="localhost", port=3306, db='mysqldb', user='user1', passwd='user1', charset='utf8')
# 創建遊標
cursor = db.cursor()
cursor.execute("select * from images")
# 打印查詢結果
# print(cursor.fetchall())
def get_ImagesList(page):
"""
:param page:
:return:
"""
html = requests.get('http://www.xxxx.com/photo/list/?page={}'.format(page)).text
reg = r'data-original="(.*?)".*?alt="(.*?)"'
reg = re.compile(reg, re.S) # 多行匹配
images_List = re.findall(reg, html)
for i in images_List:
image_url = i[0]
image_title = i[1]
cursor.execute("insert into images(`name`, `imageUrl`) values('{}', '{}')".format(image_title, image_url))
print("正在保存:%s" % image_title)
db.commit()
return images_List
"""
data-original="http://ww1.sinxx.cn/bmiddle/9150e4e5gy1gxxxxmj20f00esq3a.jpg" alt="強壯"
"""
file_path = "e:\\Temp\\doutu\\"
def download_image():
for index in range(108, 1001):
images_list = get_ImagesList(index)
for i in images_list:
image_url = i[0]
image_title = i[1]
try:
if not os.path.exists(file_path):
os.makedirs(file_path)
file_suffix = os.path.splitext(image_url)[1]
# 拼接文件名
file_name = "{}{}{}".format(file_path, image_title, file_suffix)
print(file_name)
# 利用 urlib.request.urlretrieve 下載圖片
urllib.request.urlretrieve(image_url, filename=file_name)
except Exception as e:
print(e)
if __name__ == '__main__':
download_image()