zoukankan      html  css  js  c++  java
  • request+sqlalchemy爬取图片保存数据库

    学了sqlalchemy数据库使用后,就打算爬取一些图片,试着写入数据库中

    要爬取的网站~http://www.ransheji.com

    图片是很规律的,所以不用使用正则提取图片链接,转成json格式就可以取值

    使用前先安装环境:

    pip install request 

    pip install  pymysql

    pip install  sqlalchemy

    from sqlalchemy import create_engine,Column,Integer,String   
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    import requests
    import json

    #数据库的配置变量
    HOSTNAME='192.168.xxx.xxx'
    PORT='3306'
    DATABASE='xft' #数据库,必须先创建,不然执行时候会报错
    USERNAME='root' #数据库账号
    PASSWORD='12345' #数据库密码
    DB_URL="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format
    (username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)

    engine=create_engine(DB_URL) #创建引擎
    BASE=declarative_base(engine) #用declarative_base根据engine创建一个orm的基类
    session=sessionmaker(engine)()
    #创建属性映射到数据库表中的字段
    class Ransheji(BASE):
    __tablename__='ransheji' #指定模型映射到数据库中的表名
    id=Column(Integer,primary_key=True,autoincrement=True)
    tag_name=Column(String(100))
    img_url=Column(String(500))
    BASE.metadata.drop_all()
    BASE.metadata.create_all()
    #获取图片链接
    url='http://www.ransheji.com/Api/Img/getImgList?timeStamp=1547435413230&group=1'
    r=requests.get(url)
    responseData = r.text.encode('utf-8')
    retdata = json.loads(responseData)
    print(retdata)
    list=retdata['data']


    #把数据写进数据库
    # rsj_01=Ransheji(tag_name='工装空间 售楼中心',img_url='https://static.chaodp.com/0930e73ba038c4d372f5ea10aca2caa7?imageslim&imageView2/2/w/400/')
    # session.add(rsj_01)
    # session.commit()
    #创建orm模型的对象
    for li in list:
    ransheji=Ransheji(tag_name='{}'.format(li['tag']),img_url='{}'.format(li['min_img']))
    session.add(ransheji)
    session.commit() #提交到数据库中


    查看数据库:


  • 相关阅读:
    Python并发编程之深入理解yield from语法(八)
    Python并发编程之从生成器使用入门协程(七)
    Python并发编程之消息队列补充及如何创建线程池(六)
    Delphi中Chrome Chromium、Cef3学习笔记(一)
    Webbrowser指定IE内核版本(更改注册表)
    C#截取字符串按字节截取SubString
    C# DataGridView导出Excel
    C# Microsoft.Office不存在空间名称Interop和Excel
    c#线程间传递参数
    C#根据进程名称获取进程的句柄?
  • 原文地址:https://www.cnblogs.com/xiaofantong666/p/10271085.html
Copyright © 2011-2022 走看看