使用BeautifulSoup自动爬取微信公众号图片

爬取微信分享的图片,根据不同的页面自行修改,使用BeautifulSoup爬取,自行格局HTML修改要爬取图片的位置

import re
import time

import requests
import os
from bs4 import BeautifulSoup
import urllib

imglist=[]#存放图片链接
title=''#每日标题

html=input("输入需要获取照片的公众号文章链接:")
myhtml = "https://mp.weixin.qq.com/s/kPpWCi1pEXRqjrpVLiclFw"#测试
resp=requests.get(html)#建立链接
content=resp.text#html源代码
bs=BeautifulSoup(content,'html.parser')#解析得到dom树

#获取文章标题,每个文章标题基本上放在h2标签中
title=bs.select('h2')[0].text
title=re.findall('[u4e00-u9fa5a-zA-Z0-9]+',title,re.S) #只要字符串中的中文,字母,数字,防止出现文件命名不允许的符号
title="".join(title)

#获取图片
allsection = bs.find_all('section', attrs={'data-style-id': '25310'})#根据图片所在的dom结点找到所有,自行修改
for index,item in enumerate(allsection):#遍历找到的
    img=item.find('img')#每张图片都是放在img整个标签里面
    img=img['data-src']#通过data-src这一个属性来进行进一步筛选
    imglist.append(img)#添加到列表


# 将图片保存到E:\文章名文件夹中,如果没有文章名文件夹则创建,自行修改
x = 0
path = 'E:\myphoto\'+title
if not os.path.isdir(path):
    os.makedirs(path)
paths = path+'\'      #保存在文章名文件的路径下
for imgurl in imglist:
    urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x))  #打开imglist中保存的图片网址,并下载图片保存在本地,format格式化字符串
    x = x + 1
    time.sleep(3)#防止请求过多过快导致连接中断
    print(x)
print(title+'照片获取成功,文件夹已创建!')
原文地址:https://www.cnblogs.com/zhukaile/p/15038554.html