在python中,有很多方法都可以实现网站页面中的图片和视频的爬取,urllib是其中的一种。
熟悉用urllib爬取图片的用法
python3.6、urllib包、re包
import urllib
import urllib.request
import re
import time
url = "http://tu.duowan.com/m/meinv"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'} #模拟浏览器访问
#1.根据URL获取页面源码
request = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(request)
html = response.read().decode('utf-8')
#2.通过正则表达式匹配出页面中符合要求的图片地址
pattern = re.compile(r'http://[\S]*\.jpg') #当前只匹配jpg格式的图片
lists = re.findall(pattern, html)
#3.根据图片地址下载图片到本地目录
print("图片下载开始!")
num = 1
for item in lists:
urllib.request.urlretrieve(item, 'pic/' + str(num) + '.jpg') #pic目录需要预先建好,否则会报错
print("正在下载第%s张图片"%num)
if num == 12: # 只下载12张图片
break
time.sleep(1) #为了防止请求过快
num += 1
print("图片下载结束!")
实验结果
用urllib来爬取网站中的图片很简单,主要分为3步:
1. 根据URL获取页面源码
2. 通过正则表达式匹配出页面中符合要求的图片地址
3. 根据图片地址下载图片到本地目录
本例中还有很多需要完善的地方,比如:异常处理、用os库新建本地文件夹、匹配所有类型的图片、代码如何改成面向对象等。
视频的爬取方法跟图片完全一样,只是扩展名不同。