内容:
爬取豆瓣电影首页https://movie.douban.com/ 显示出来的图片,并将其保存于本地路径中。
网页部分截图:
原理:
1.使用内置库:urllib.request 获取请求得到网页数据 ;
2.利用header 进行伪装浏览器;
3.再使用正则表达式 r'(https:[^s]*?(jpg|png|gif))' 取出照片地址
4.创建本地路径进行存储
代码:
import urllib.request
import socket
import re
import sys
import os
# 定义图片保存路径
targetPath = "D:\\py_project\\img"
def saveImg(path):
# 检测当前根路径是否有效,不存在则新建
if not os.path.isdir(targetPath):
os.mkdir(targetPath)
# 设置每个图片的路径
# 获取图片地址最后一个 / 的位置
pos = path.rindex('/')
# img_path[pos+1:]获取/后面的名称,并加入到根路径
t = os.path.join(targetPath, path[pos + 1:])
return t
if __name__ == '__main__':
# 需要抓取的url
url = "https://movie.douban.com/ "
# 添加header文件伪装成浏览器
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/51.0.2704.63 Safari/537.36'
}
# 通过urllib.request获取请求页面数据data
req = urllib.request.Request(url=url, headers=headers)
res = urllib.request.urlopen(req)
data = res.read()
# 通过正则表达式抓取储图片url
for link, t in set(re.findall(r'(https:[^s]*?(jpg|png|gif))', str(data))):
print(link)
try:
urllib.request.urlretrieve(link, saveImg(link))
except:
print('失败')
运行结果