抓取微信公众号文章中的图片

2018-05-23  本文已影响0人  zqlmmd

最近在写微信公众号文章, 为了收集图片素材,就想做一个小工具,给一个url链接, 就可以自动下载链接中的图片.
用到的就是Python,requests库和BeautifulSoup.

  1. 理清思路


    image
  2. 分析文章源码
    以文章https://mp.weixin.qq.com/s?__biz=MjM5NDA5NDcyMA==&mid=2651695447&idx=1&sn=d538d53d3ec52fea83b73564f5aaead0&chksm=bd7402b88a038bae930946b1afea11acccbd0d1cd9c5dbb9ed922fcc9d224d0560171679507b&scene=0#rd 为例,
    在chrome中打开链接, 按快捷键 alt+command+I 打开开发者模式, 查看网页源码.
    image
  3. 获取img的src
    可以看到, 图片都是使用img标签,使用BeautifulSoup的find_all()方法获取,图片的资源是对应的 data-src 字段.
        r = requests.get(url)
        r.raise_for_status()
        soup = BeautifulSoup(r.text, 'html.parser')
        imgs = soup.find_all('img', attrs={'data-copyright': 0})
        if imgs is not None:
            for img in imgs:
                print(img['data-src'])
                url_list.append(img['data-src'])
        return url_list
  1. 下载图片到本地
    下载的路径path 通过os.getcwd()获取
    图片的内容 通过request.get(pic_url).content
    图片的命名
    保存 通过open()和write()
path = os.getcwd()
    try:
        pic_name = url.split("/")[-2]
        fmt = url.split("=")[-1]
        resp = requests.get(url).content
        with open(path + '/' + pic_name+'.'+fmt, "wb+") as f:
            f.write(resp)
    except Exception as reason:
        print(str(reason))
  1. 最终结果


    image
上一篇下一篇

猜你喜欢

热点阅读