通过python 可以将图片直接下载到本地,或者将图片/MP3/视频等资源的Url 路径和名称保存在数据库中 。
这里使用的是mysql 数据库。在上传到mysql的时候发现报错:
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()