请求对象定制
因为第一页的链接和后面页面的链接不同,所以需要判断一下。
# https://sc.chinaz.com/tupian/
# https://sc.chinaz.com/tupian/index_2.html
# https://sc.chinaz.com/tupian/index_3.html
if(page == 1):
url = 'https://sc.chinaz.com/tupian/'
else:
url = 'https://sc.chinaz.com/tupian/index_' + str(page) + '.html'
headers = {
'User-Agent': 'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/39.0.2171.71Safari/537.36'
}
request = urllib.request.Request(url=url, headers=headers)
模拟浏览器访问服务器
要设置编码,不然会出现乱码。
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
获取网页源码
tree = etree.HTML(content)
解析网页源码
name_list = tree.xpath('//div[@class="item"]/img/@alt')
src_list = tree.xpath('//div[@class="item"]/img/@data-original')
for i in range(len(src_list)):
name = name_list[i]
src = src_list[i]
url = 'https:' + src
print('正在下载', name)
# 这个图片是预览图片,不是高清的,要下高清的要进到图片的链接里面才行
urllib.request.urlretrieve(url=url, filename='./站长素材图片/' + name + '.jpg')
print(name, '下载完成')