import os
import requests
from bs4 import BeautifulSoup
import shutil
from lxml import etree
import urllib.request
class dangdang():
def __init__(self):
if os.path.exists('D:/test%d'%i):
print('目录存在准备删除')
shutil.rmtree('D:/test%d'%i)
os.mkdir('D:/test%d'%i)
print('目录创建成功')
os.chdir('D:/test%d'%i)
print('当前目录为:'+os.getcwd())
def geturl(self,url):
self.url=url
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400'
}
result=requests.get(self.url,headers=headers)
result=result.text #转化为字节型
html = etree.HTML(result) #转化为html标准格式
srcs=html.xpath('//div/a/img/@src') #使用xpath进行层级分析,查找需要的内容
for src in srcs: #遍历所有需要的内容
filename=src.split('/')[-1].split('.')[0] #储存文件名,采用分割的方法
urllib.request.urlretrieve(src,filename+'.jpg')
print('图片下载成功')
if __name__=='__main__':
for i in range(1,3): #网页链接只有最后一位不同,通过循环的次数,批量下载多页图片
url='http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-%d'%i
dir=dangdang()
dir.geturl(url)
通过对xpath,beautifulsoup,正则表达式三种方法分别进行10次测试。
以当当网下载9页图片为例,下载平均速度如下
正则表达式耗时:9秒
Xpath耗时:11秒
beautifulsoup耗时:12秒