前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用selenium爬取表情包,使用wxpy库自动发送

使用selenium爬取表情包,使用wxpy库自动发送

作者头像
andrew_a
发布2019-07-30 14:16:32
8170
发布2019-07-30 14:16:32
举报
文章被收录于专栏:Python爬虫与数据分析

斗图!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

昨天和我的几个逗比朋友斗图,突然发现竟然没有表情包,作为一个Python的菜菜程序员,这是我不能忍的。所以就赶紧弄了个爬虫,爬一大堆表情包,微信自动发送轰炸他们,找了个表情包网站

代码语言:javascript
复制
https://www.doutula.com/photo/list/?page=1

不过这个网站直接requests请求不到内容,应该也是js加载的。所以最简单的办法就是使用selenium,万能!

该网站的结构

如果是gif,会多出一个img标签

根据此来写出xpath,拿出图片的地址,使用urllib进行下载

下载完成后保存。然后在通过wxpy库,发送给好友或者群。

具体代码

使用selenium获取表情包,并保存到文件中。注意保存的时候文件名最好是英文或者数字,否则当你使用wxpy库模拟发送的时候,会直接报错。

代码语言:javascript
复制
def get_doutu():

    browser = webdriver.Chrome()
    # img_url_dic = {}
    for i in range(1, 2):
        browser.get('https://www.doutula.com/photo/list/?page=%s' % str(i))
        time.sleep(4)
        eles = browser.find_elements_by_xpath('//div[@class="container_"]/div[@id="pic-detail"]/div[@class="row"]/div[@class="col-sm-9"]/div[@class="random_picture"]/ul[@class="list-group"]/li[@class="list-group-item"]/div[@class="page-content text-center"]/div/a[@class="col-xs-6 col-sm-3"]/img[@data-original]')
        # names = browser.find_elements_by_xpath('//div[@class="container_"]/div[@id="pic-detail"]/div[@class="row"]/div[@class="col-sm-9"]/div[@class="random_picture"]/ul[@class="list-group"]/li[@class="list-group-item"]/div[@class="page-content text-center"]/div/a[@class="col-xs-6 col-sm-3"]/img[@data-original]')

        for j in range(len(eles)):
            url = eles[j].get_attribute('data-original')
            url = url.split('!')[0]
            ext = url.split('.')[-1]
            name = random.randrange(1, 10000, 2)
            filename = str(name) + '.' + ext
            # 保存图片数据
            data = urllib.request.urlopen(url).read()
            f = open('image/' + filename, 'wb')
            f.write(data)
            f.close()
        time.sleep(5)

    browser.close()
    browser.quit()

获取文件列表,打印是为了充数,将文件的地址拼接好,发送给send_news(),由它进行发送。

代码语言:javascript
复制
def listdir(file_dir):
    for root, dirs, files in os.walk(file_dir):
        print(root)  # 当前目录路径
        print(dirs)  # 当前路径下所有子目录
        print(files)  # 当前路径下所有非目录子文件
        print(type(files))
    for i in files:

        send_news(file_dir + i)
        time.sleep(10)

到入wxpy包,登录微信并发送

代码语言:javascript
复制
def login_wechat():

    global bot
    bot = Bot()
    # bot = Bot(console_qr=2,cache_path="botoo.pkl")#linux环境上使用

def send_news(data):

    if bot == None:
        login_wechat()
    try:
        my_group = bot.groups().search(u'逗比四人行')[0]
        time.sleep(20)
        print(data)
        my_group.send_image(data)
        
    except Exception as e:
        print(u"失败!!", e)

最好设置间隔时间。小心被清理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档