采用python 版本 3.6
urllib3 requests
使用pip install urllib3 导入需要用到的组件
pip install requests
通过request()方法创建一个请求:
http = urllib3.PoolManager()
r = http.request(‘GET’, ‘http://tieba.baidu.com/p/2460150866’)
print(r.status) # 200
请求网址得到返回
此时返回的是页面的源码,类似于点击鼠标右键,查看源码得到的页面
对页面进行解析
def downloadImg(content):
pattern = r'src="(.+?\.jpg)" pic_ext'
m = re.compile(pattern)
urls = re.findall(m, content)
把src= 开头的 .jpg 结尾的字符串刷选出来得到一个 url的集合
def saveImage(imglist,name):
number = 1
http = urllib3.PoolManager()
for imageURL in imglist:
print(imageURL)
splitPath = imageURL.split('.')
fileExt = splitPath.pop()
fileName = name + "/" + str(number) + "." + fileExt #name是存储图片的路径,number作为图片名
# 下载单个imageURL的图片
r = http.request('GET', imageURL)
data = r.data
f = open(fileName, 'wb+')
f.write(data)
print(u'正在保存的一张图片为:%s', fileName)
f.close()
number += 1
根据 图片的url 把图片下载到保存到本地
完整代码
# -*- coding:utf-8 -*-
import urllib3
import requests
import re
def downloadImg(content):
pattern = r'src="(.+?\.jpg)" pic_ext'
m = re.compile(pattern)
urls = re.findall(m, content)
saveImage(urls,"d://tp")
def saveImage(imglist,name):
number = 1
http = urllib3.PoolManager()
for imageURL in imglist:
print(imageURL)
splitPath = imageURL.split('.')
fileExt = splitPath.pop()
fileName = name + "/" + str(number) + "." + fileExt #name是存储图片的路径,number作为图片名
# 下载单个imageURL的图片
r = http.request('GET', imageURL)
data = r.data
f = open(fileName, 'wb+')
f.write(data)
print(u'正在保存的一张图片为:%s', fileName)
f.close()
number += 1
print('\ntotal number of image:%s',(name,number))
# 忽略警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.
requests.packages.urllib3.disable_warnings()
# 一个PoolManager实例来生成请求, 由该实例对象处理与线程池的连接以及线程安全的所有细节
http = urllib3.PoolManager()
# 通过request()方法创建一个请求:
r = http.request('GET', 'http://tieba.baidu.com/p/2460150866')
print(r.status) # 200
# 获得html源码,utf-8解码
print(r.data.decode())
downloadImg(r.data.decode())
运行结果
去D盘查看
页面上的图片就全部被保存到本地了。
同理只需要有url就可以拿到各种页面的图片,或者你需要的内容