精华内容
下载资源
问答
  • 微博图片有水印 现在大多数的微博图片都有水印,看到喜欢的图片想保存起来做壁纸,可是微博水印看着太别扭了,这怎么去除呢? 常见微博水印 微博的水印位置有三处: 微博图片的中心位置; 微博图片的底部中间; ...

    微博图片有水印

    现在大多数的微博图片都有水印,看到喜欢的图片想保存起来做壁纸,可是微博水印看着太别扭了,这怎么去除呢?

    常见微博水印

    微博的水印位置有三处:

    1. 微博图片的中心位置;
    2. 微博图片的底部中间;
    3. 微博图片的底部右侧;

    微博水印自动去除

    微博水印自动去除应该分为两步:

    1. 分析水印的位置;
    2. 抹去前景色(水印);

    但是这个水印位置如何找?首先想到的是深度学习,然俄,偶是菜鸟,不会用。陷入迷茫中…
    然而,山重水复疑无路,柳暗花明又一村,上网闲逛的时候偶然发现一个网站,竟然提供了微博图片水印自动去除功能,感谢万能的gg搜索工具。

    去水印工具

    废话不多说,上大神作品:

    链接: 去水印工具.(已经失效,需要留言)

    貌似准确性有点问题,凑合用了。

    展开全文
  • 新浪微博图片批量下载助手较方便的新浪微博图片批量下载工具。批量下载所有选中相册的新浪微博图片,再也不用一张张手动下载。软件集成浏览器功能,可以在浏览新浪微博的过程
  • 新浪微博图片批量下载助手是一款较好用的新浪微博图片批量下载工具,软件集成浏览器功能,可以在浏览新浪微博的过程中,自动识别并列出页面上所有新浪微博ID,方便用户添加并
  • 高仿微博图片浏览器

    2021-04-05 19:27:57
    作者LuKane,源码KNPhotoBrower,高仿 微博 图片浏览器 一.功能描述及要点 1.加载网络九宫格图片 2.SDWebImage下载图片,KNProgressHUD显示加载进度 3.高仿微博,显示动画,KNToast提示
  • 微博图片浏览

    2015-12-03 09:34:23
    仿照微博图片的浏览方式实现的图片浏览的demo
  • 微博图片反查-crx插件

    2021-03-18 23:30:01
    查看微博图片的po主 通过微博图片 微博图床 反查上传者 https://github.com/fei-ke/WeiboImageReverse ps: https://www.v2ex.com/t/388152 支持语言:中文 (简体)
  • iOS仿微博图片浏览器

    2021-01-05 00:14:57
    高仿微博图片浏览器 PhotoBrower.gif 一.功能描述及要点 1.加载网络九宫格图片,collectionView,scrollView 2.SDWebImage下载图片,KNProgressHUD显示加载进度 3.高仿微博,显示动画,KNToast提示 二.方法调用 1....
  • 微博图片爬虫exe

    2017-10-28 17:44:26
    简单好用,输入想要下载微博图片的对应用户的用户名,并不需要登录自己账号,并没有被封账号的危险。
  • 同时欢迎加入社交媒体数据交流群:99918768前言由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来...

    本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768

    前言

    由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才完成。

    挖坑填坑之旅

    建表

    存数据的时候首先需要设计数据库,我准备设计了3个表

    微博表:[id, userid, blog_text, lat, lng, created_time, reserve]   pkey: id

    图片表:[md5, pic_url, pic_bin, exif, reserve]   pkey: md5

    关系表:[id, md5, reserve]   pkey: (id, md5)   fkey: (id, 微博表id)  (md5, 图片表md5)

    建表的时候别的问题都还好,主要是 pic_bin 的类型和 blog_text 的类型有很大的问题,首先是pic_bin的类型,开始设置的为BLOB,但是运行之后发现BLOB最大只能存1M的数据,并不能满足微博图片的存储,后改成MEDIUMBLOB(16M)基本能够满足要求了。再后来就是blog_text,我遇到的第一个大坑

    开始的时候很自然的设置blog_text的类型为TEXT,但跑起来发现有些数据存不进去,会报错,经筛查发现是有些微博文本中包含了emoji表情...随后找了很多资料发现是因为utf8下文字是三字节,但是emoji是四字节,需要将编码改成utf8mb4。然而我在mac上整mysql的配置文件报各种奇葩错误,一怒之下把TEXT改成了BLOB,就好了。因为本地是MAC,我要连接到远程的一台Windows上才能通过那个Windows连接到群晖的Mysql上...本地配置改了也白改。

    存图片

    然后这就是一个大坑!!! 由于我使用的python3,所以读取图片得到的二进制的结果前面会有一个b', 表示bytes,正是由于这个b'导致sql语句拼接的时候这个b后面的单引号会和sql语句的引号结合,导致后面的二进制没有在引号里面出错!二进制编码又不像string可以对字符转义,试了好多方法都不行!最后没有办法使用base64 对二进制进行加密转化成字符串,存到数据库中,然后要用时的时候再解密。

    pic_bin = str(base64.b64encode(pic_bin))[2:-1]

    改配置文件

    由于使用Python多进程,一个小时8G数据量,图片数据比较大,发包的时候回超过mysql的默认限制,出现Mysql server has gone away, 这个时候要改配置文件,在配置文件中参数

    max_allowed_packet = 600M

    wait_timeout = 60000

    Lost connection to Mysql server during query

    程序跑着跑着总会出现这个错误,一直找原因,试了各种办法看了好多资料,一直都是错误。实在不知道什么原因了...后来一想,我管他什么原因,失去连接之后重新连接就行了。使用conn.Ping(True) 判断是否连接mysql成功。如果失去连接就重新连接就行了!最后解决了这个问题

    代码实现

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    # Created by Baoyi on 2017/10/16

    from multiprocessing.pool import Pool

    import pymysql

    import requests

    import json

    import exifread

    from io import BytesIO

    import configparser

    import hashlib

    import logging

    import base64

    # 配置logging

    logging.basicConfig(level=logging.WARNING,

    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

    datefmt='%a, %d %b %Y %H:%M:%S',

    filename='weibo.log',

    filemode='w')

    cf = configparser.ConfigParser()

    cf.read("ConfigParser.conf")

    # 读取配置mysql

    db_host = cf.get("mysql", "db_host")

    db_port = cf.getint("mysql", "db_port")

    db_user = cf.get("mysql", "db_user")

    db_pass = cf.get("mysql", "db_pass")

    db = cf.get("mysql", "db")

    # 创建连接

    conn = pymysql.connect(host=db_host, user=db_user, passwd=db_pass, db=db, port=db_port, charset='utf8')

    # 获取游标

    cursor = conn.cursor()

    # 创建insert_sql

    insert_blog_sql = (

    "INSERT IGNORE INTO blog(userid, id, blog_text, lat, lng, created_time) VALUES('{uid}', '{id}','{blog_text}','{lat}','{lng}','{created_time}')"

    )

    insert_pic_sql = (

    "INSERT IGNORE INTO pics(pic_url, pic_bin, md5, exif) VALUES ('{pic_url}','{pic_bin}','{md5}','{exif}')"

    )

    insert_relationship_sql = (

    "INSERT IGNORE INTO relationship(id, md5) VALUES ('{id}','{md5}')"

    )

    uid = []

    with open('./data/final_id.txt', 'r') as f:

    for i in f.readlines():

    uid.append(i.strip('\r\n'))

    # 处理图片数据

    def handle_pic(pic_url):

    large_pic_url = pic_url.replace('thumbnail', 'large')

    large_bin = requests.get(large_pic_url)

    return large_bin.content

    def get_poiid_info(uid):

    try:

    url = 'https://api.weibo.com/2/statuses/user_timeline.json'

    load = {

    'access_token': 'xxxxxxxxxx',

    'uid': uid,

    'count': 100,

    'feature': 2,

    'trim_user': 1

    }

    get_info = requests.get(url=url, params=load, timeout=(10, 10))

    if get_info.status_code != 200:

    logging.warning(ConnectionError)

    pass

    info_json = json.loads(get_info.content)

    info_json['uid'] = uid

    statuses = info_json['statuses']

    # 处理筛选微博数据

    for status in statuses:

    id = status['idstr']

    if status['geo'] is not None:

    lat = status['geo']['coordinates'][0]

    lng = status['geo']['coordinates'][1]

    pic_urls = status['pic_urls']

    # 判断是否在北京

    if (115.7 < lng < 117.4) and (39.4 < lat < 41.6):

    # 若在北京,插入blog数据进库

    blog_text = status['text'].replace('\'', '\'\'')

    created_time = status['created_at']

    try:

    cursor.execute(

    insert_blog_sql.format(uid=uid, id=id, blog_text=blog_text, lat=lat, lng=lng,

    created_time=created_time))

    except pymysql.err.OperationalError as e_blog:

    logging.warning(e_blog.args[1])

    pass

    # conn.commit()

    # 处理图片

    for pic_url in pic_urls:

    # 获取原图片二进制数据

    pic_bin = handle_pic(pic_url['thumbnail_pic'])

    # 读取exif 数据

    pic_file = BytesIO(pic_bin) # 将二进制数据转化成文件对象便于读取exif数据信息和生成MD5

    tag1 = exifread.process_file(pic_file, details=False, strict=True)

    tag = {}

    for key, value in tag1.items():

    if key not in (

    'JPEGThumbnail', 'TIFFThumbnail', 'Filename',

    'EXIF MakerNote'): # 去除四个不必要的exif属性,简化信息量

    tag[key] = str(value)

    tags = json.dumps(tag) # dumps为json类型 此tag即为exif的json数据

    # 生成MD5

    MD5 = hashlib.md5(pic_file.read()).hexdigest()

    # 首先把二进制图片用base64 转成字符串之后再存

    try:

    cursor.execute(

    insert_pic_sql.format(pic_url=pic_url['thumbnail_pic'].replace('thumbnail', 'large'),

    pic_bin=str(base64.b64encode(pic_bin))[2:-1], md5=MD5,

    exif=tags))

    except pymysql.err.OperationalError as e_pic:

    logging.warning(e_pic.args[1])

    pass

    try:

    cursor.execute(insert_relationship_sql.format(id=id, md5=MD5))

    except pymysql.err.OperationalError as e_relation:

    logging.warning(e_relation)

    pass

    conn.commit()

    else:

    logging.info(id + " is Not in Beijing")

    pass

    else:

    logging.info(id + ' Geo is null')

    pass

    except pymysql.err.OperationalError as e:

    logging.error(e.args[1])

    pass

    def judge_conn(i):

    global conn

    try:

    conn.ping(True)

    get_poiid_info(i)

    except pymysql.err.OperationalError as e:

    logging.error('Reconnect')

    conn = pymysql.connect(host=db_host, user=db_user, passwd=db_pass, db=db, charset='utf8')

    get_poiid_info(i)

    def handle_tuple(a_tuple):

    read_uid_set = []

    for i in a_tuple:

    read_uid_set.append(i[0])

    return set(read_uid_set)

    if __name__ == '__main__':

    sql_find_uid = (

    "SELECT userid FROM blog"

    )

    cursor.execute(sql_find_uid)

    read_uid_tuple = cursor.fetchall()

    read_list = handle_tuple(read_uid_tuple)

    print(len(read_list))

    new_uid = set(uid).difference(read_list)

    print(len(new_uid))

    pool = Pool()

    pool.map(judge_conn, list(new_uid))

    个人博客

    展开全文
  • KNPhotoBrower高仿 微博 图片浏览器
  • 微博图片视频小爬虫

    2018-02-05 07:24:29
    才刚刚学习python不久,自己琢磨做的一个微博爬虫小程序,可以自动下载其他人的微博图片以及视频,大佬勿喷。
  • 同时欢迎加入社交媒体数据交流群:99918768前言由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来...

    本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768

    前言

    由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才完成。

    挖坑填坑之旅

    建表

    存数据的时候首先需要设计数据库,我准备设计了3个表

    微博表:[id, userid, blog_text, lat, lng, created_time, reserve]   pkey: id

    图片表:[md5, pic_url, pic_bin, exif, reserve]   pkey: md5

    关系表:[id, md5, reserve]   pkey: (id, md5)   fkey: (id, 微博表id)  (md5, 图片表md5)

    建表的时候别的问题都还好,主要是 pic_bin 的类型和 blog_text 的类型有很大的问题,首先是pic_bin的类型,开始设置的为BLOB,但是运行之后发现BLOB最大只能存1M的数据,并不能满足微博图片的存储,后改成MEDIUMBLOB(16M)基本能够满足要求了。再后来就是blog_text,我遇到的第一个大坑

    开始的时候很自然的设置blog_text的类型为TEXT,但跑起来发现有些数据存不进去,会报错,经筛查发现是有些微博文本中包含了emoji表情...随后找了很多资料发现是因为utf8下文字是三字节,但是emoji是四字节,需要将编码改成utf8mb4。然而我在mac上整mysql的配置文件报各种奇葩错误,一怒之下把TEXT改成了BLOB,就好了。因为本地是MAC,我要连接到远程的一台Windows上才能通过那个Windows连接到群晖的Mysql上...本地配置改了也白改。

    存图片

    然后这就是一个大坑!!! 由于我使用的python3,所以读取图片得到的二进制的结果前面会有一个b', 表示bytes,正是由于这个b'导致sql语句拼接的时候这个b后面的单引号会和sql语句的引号结合,导致后面的二进制没有在引号里面出错!二进制编码又不像string可以对字符转义,试了好多方法都不行!最后没有办法使用base64 对二进制进行加密转化成字符串,存到数据库中,然后要用时的时候再解密。

    pic_bin = str(base64.b64encode(pic_bin))[2:-1]

    改配置文件

    由于使用Python多进程,一个小时8G数据量,图片数据比较大,发包的时候回超过mysql的默认限制,出现Mysql server has gone away, 这个时候要改配置文件,在配置文件中参数

    max_allowed_packet = 600M

    wait_timeout = 60000

    Lost connection to Mysql server during query

    程序跑着跑着总会出现这个错误,一直找原因,试了各种办法看了好多资料,一直都是错误。实在不知道什么原因了...后来一想,我管他什么原因,失去连接之后重新连接就行了。使用conn.Ping(True) 判断是否连接mysql成功。如果失去连接就重新连接就行了!最后解决了这个问题

    代码实现

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    # Created by Baoyi on 2017/10/16

    from multiprocessing.pool import Pool

    import pymysql

    import requests

    import json

    import exifread

    from io import BytesIO

    import configparser

    import hashlib

    import logging

    import base64

    # 配置logging

    logging.basicConfig(level=logging.WARNING,

    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

    datefmt='%a, %d %b %Y %H:%M:%S',

    filename='weibo.log',

    filemode='w')

    cf = configparser.ConfigParser()

    cf.read("ConfigParser.conf")

    # 读取配置mysql

    db_host = cf.get("mysql", "db_host")

    db_port = cf.getint("mysql", "db_port")

    db_user = cf.get("mysql", "db_user")

    db_pass = cf.get("mysql", "db_pass")

    db = cf.get("mysql", "db")

    # 创建连接

    conn = pymysql.connect(host=db_host, user=db_user, passwd=db_pass, db=db, port=db_port, charset='utf8')

    # 获取游标

    cursor = conn.cursor()

    # 创建insert_sql

    insert_blog_sql = (

    "INSERT IGNORE INTO blog(userid, id, blog_text, lat, lng, created_time) VALUES('{uid}', '{id}','{blog_text}','{lat}','{lng}','{created_time}')"

    )

    insert_pic_sql = (

    "INSERT IGNORE INTO pics(pic_url, pic_bin, md5, exif) VALUES ('{pic_url}','{pic_bin}','{md5}','{exif}')"

    )

    insert_relationship_sql = (

    "INSERT IGNORE INTO relationship(id, md5) VALUES ('{id}','{md5}')"

    )

    uid = []

    with open('./data/final_id.txt', 'r') as f:

    for i in f.readlines():

    uid.append(i.strip('\r\n'))

    # 处理图片数据

    def handle_pic(pic_url):

    large_pic_url = pic_url.replace('thumbnail', 'large')

    large_bin = requests.get(large_pic_url)

    return large_bin.content

    def get_poiid_info(uid):

    try:

    url = 'https://api.weibo.com/2/statuses/user_timeline.json'

    load = {

    'access_token': 'xxxxxxxxxx',

    'uid': uid,

    'count': 100,

    'feature': 2,

    'trim_user': 1

    }

    get_info = requests.get(url=url, params=load, timeout=(10, 10))

    if get_info.status_code != 200:

    logging.warning(ConnectionError)

    pass

    info_json = json.loads(get_info.content)

    info_json['uid'] = uid

    statuses = info_json['statuses']

    # 处理筛选微博数据

    for status in statuses:

    id = status['idstr']

    if status['geo'] is not None:

    lat = status['geo']['coordinates'][0]

    lng = status['geo']['coordinates'][1]

    pic_urls = status['pic_urls']

    # 判断是否在北京

    if (115.7 < lng < 117.4) and (39.4 < lat < 41.6):

    # 若在北京,插入blog数据进库

    blog_text = status['text'].replace('\'', '\'\'')

    created_time = status['created_at']

    try:

    cursor.execute(

    insert_blog_sql.format(uid=uid, id=id, blog_text=blog_text, lat=lat, lng=lng,

    created_time=created_time))

    except pymysql.err.OperationalError as e_blog:

    logging.warning(e_blog.args[1])

    pass

    # conn.commit()

    # 处理图片

    for pic_url in pic_urls:

    # 获取原图片二进制数据

    pic_bin = handle_pic(pic_url['thumbnail_pic'])

    # 读取exif 数据

    pic_file = BytesIO(pic_bin) # 将二进制数据转化成文件对象便于读取exif数据信息和生成MD5

    tag1 = exifread.process_file(pic_file, details=False, strict=True)

    tag = {}

    for key, value in tag1.items():

    if key not in (

    'JPEGThumbnail', 'TIFFThumbnail', 'Filename',

    'EXIF MakerNote'): # 去除四个不必要的exif属性,简化信息量

    tag[key] = str(value)

    tags = json.dumps(tag) # dumps为json类型 此tag即为exif的json数据

    # 生成MD5

    MD5 = hashlib.md5(pic_file.read()).hexdigest()

    # 首先把二进制图片用base64 转成字符串之后再存

    try:

    cursor.execute(

    insert_pic_sql.format(pic_url=pic_url['thumbnail_pic'].replace('thumbnail', 'large'),

    pic_bin=str(base64.b64encode(pic_bin))[2:-1], md5=MD5,

    exif=tags))

    except pymysql.err.OperationalError as e_pic:

    logging.warning(e_pic.args[1])

    pass

    try:

    cursor.execute(insert_relationship_sql.format(id=id, md5=MD5))

    except pymysql.err.OperationalError as e_relation:

    logging.warning(e_relation)

    pass

    conn.commit()

    else:

    logging.info(id + " is Not in Beijing")

    pass

    else:

    logging.info(id + ' Geo is null')

    pass

    except pymysql.err.OperationalError as e:

    logging.error(e.args[1])

    pass

    def judge_conn(i):

    global conn

    try:

    conn.ping(True)

    get_poiid_info(i)

    except pymysql.err.OperationalError as e:

    logging.error('Reconnect')

    conn = pymysql.connect(host=db_host, user=db_user, passwd=db_pass, db=db, charset='utf8')

    get_poiid_info(i)

    def handle_tuple(a_tuple):

    read_uid_set = []

    for i in a_tuple:

    read_uid_set.append(i[0])

    return set(read_uid_set)

    if __name__ == '__main__':

    sql_find_uid = (

    "SELECT userid FROM blog"

    )

    cursor.execute(sql_find_uid)

    read_uid_tuple = cursor.fetchall()

    read_list = handle_tuple(read_uid_tuple)

    print(len(read_list))

    new_uid = set(uid).difference(read_list)

    print(len(new_uid))

    pool = Pool()

    pool.map(judge_conn, list(new_uid))

    个人博客

    展开全文
  • 今天小编就为大家分享一篇关于易语言通过解密微博图片地址获取发布者微博地址的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 新浪微博图片

    2015-08-30 18:56:55
    新浪微博图片

    这里写图片描述

    新浪微博图片

    展开全文
  • Chrome 插件,反查微博图片po主
  • ZYTagView:仿微博图片添加标签
  • ZYTagView 仿微博图片添加标签
  • 完全仿照 新浪微博图片 显示 制作 公司要制作这样一个东东 花了一个礼拜写的 稍微改改完全满足你的需求的
  • 本人长期出售超大量微博数据...  由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才...
  • 新浪微博图片展示效果是一款基于jQuery、artZoom.js制作的网站图片展示效果代码。有图片向左旋转、向右旋转和查看原图的功能。
  • 前言由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才完成。PS:(本人长期出售超大量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,648
精华内容 2,659
关键字:

微博图片