Python爬取指定网页所有图片 !

爬取指定网页图片

必要准备

pip install requests 

pip intsall BeautifulSoup4 

pip install pillow

常见运行错误

(1)No module named 'PIL' #找不到PIL模块

(2)Importerror : DLL load failed: #找不到指定文件

解决办法

(1)PIL模块只存在于python2里,在python3中被pillow替代,所以只需在cmd命令中输入pip install pillow。

(2/1)在cmd命令中输入 pip uninstall pillow,再输入pip install pillow 进行重新安装。如若还是失败,采用下方的解决办法。

(2/2)在https://www.lfd.uci.edu/~gohlke/pythonlibs/ 链接中找到下图所示的链接进行下载

可以添加QQ群1004391443,有飞机大战、颜值打分器、打砖块小游戏、红包提醒神器、小姐姐表白神器等具体的实训项目,有清晰源码,有相应的文件

在cmd命令中输入cd /d 文件位置(例:C:\Users\1\Downloads\)再输入pip install Pillow-6.0.0-cp37-cp37m-win_amd64.whl,如下

运行效果如下

代码如下

  •  
import requests  #引入requestsfrom bs4 import BeautifulSoup  #从bs4库中引入BeautifulSoup模块,用于解析url(链接)import os                 #引入os,用于保存文件到指定文件夹from PIL import Image     #从PIL库中引入Image等价于引入pillowfrom io import BytesIO   #从io中引入BytesIO,在内存中读取二进制数据import time              #引入time用于延迟,爬虫的时间间隔
url = "http://www.yestone.com/gallery/1501754333627" #链接headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}  #把爬虫伪装成浏览器,里面的参数是在浏览器中寻找,在代码下方。
r = requests.get(url, headers=headers)   #带参数请求数据(链接,浏览器伪装)soup = BeautifulSoup(r.content, 'html.parser') #对浏览器返回的数据进行解析,.content是二进制文件,.text是纯文本items = soup.find_all('img', class_='img-responsive') #对提取的数据进行最小父级标签查找,class_=可以当做规范写法,在代码下方有显示
folder_path = './photo' #定义路径(文件夹名称)
if os.path.exists(folder_path) == False:  #若路径不存在   os.makedirs(folder_path)    #创建路径
for index, item in enumerate(items):  #从刚才解析的items中进行枚举查找,index默认为0    if item:    #用于判断items中有无值,有则是True进行if后面的语句,没有则跳出if下面的语句        html = requests.get(item.get('data-src')) #获取图片链接,'data-scr'如何查找?在代码下方        img_name = folder_path + str(index + 1) + '.png'  #文件名称和格式        image = Image.open(BytesIO(html.content))   #打开服务器返回的二进制图片        image.save('E:\Python\photo'+img_name)     #在指定目录下保存文件        print('第%d张图片下载完成' % (index + 1))   #输出结果        time.sleep(1)  # 延时1sprint('抓取完成')

查找方式User-Agent的方式(在浏览器中输入 ctrl+shift+i 检查,点击Newtwork,再按F5刷新,点击name,再点击Headers,拉到底部即可找到代理服务器)

找图片最小父级标签(ctrl+shift+i ,通过下方第一个红框所述的按键点击图片,即可显示下图网页结构)

查找图片链接('data-src')

其他问题

1.如果类比使用该程序?

1)更改url

2) 更改 class_= 前后方的参数,更改item.get()里面的参数

3)路径名可以不修改folder_path = './photo'

2.如何同时爬取一个网站不同页数的图片?

找到网站之间的规律(以http://sc.chinaz.com/tupian/beijingtupian_3.html为例)

  •  
for i in range(1,10):    url = 'http://sc.chinaz.com/tupian/beijingtupian_'+str(i)'+'.html'

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/89433642