用xpath解析网页下载美女图片

import urllib.request
from lxml import etree
import os

def handle_url(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537'
    }
    request = urllib.request.Request(url=url, headers=headers)
    return request

def download_image(image_url_list, name_list):
    # print(image_url_list)
    # print(len(name_list), len(image_url_list))
    # exit()
    # 获取文件夹名字
    dirpath = './images'
    # 遍历url列表,和名字列表
    for i in range(len(name_list)):
        # 根据url获取到图片的后缀名
        suffix = os.path.splitext(image_url_list[i])[-1]
        # 得到图片的全路径
        filepath = os.path.join(dirpath, name_list[i]) +suffix
        # 下载图片
        try:
            urllib.request.urlretrieve(image_url_list[i], filepath)
            print('%s 下载完毕' % filepath)
        except Exception as e:
            print('%s xxxxxxxxxxxxx图片丢失' % filepath)

def handle_data(request):
    response = urllib.request.urlopen(request)
    html = response.read().decode('utf-8')
    html_tree = etree.HTML(html)
    # print(type(html_tree))
    # //div[@id="container"]/div/div/a/img/@src
    image_url_list = html_tree.xpath('//div[@id="container"]/div/div/a/img/@src2')
    # print(len(image_url_list))
    # exit()
    name_list = html_tree.xpath('//div[@id="container"]/div/div/a/img/@alt')
    # 遍历image_url_list,依次下载图片
    download_image(image_url_list, name_list)

def main():
    start_page = int(input('请输入起始页面:'))
    end_page = int(input('请输入结束页面:'))
    url_tmp = 'http://sc.chinaz.com/tupian/xingganmeinvtupian'
    print('开始下载图片')
    for page in range(start_page, end_page + 1):
        if page != 1:
            url = url_tmp + '_' + str(page) + '.html'
        else:
            url = url_tmp + '.html'
        request = handle_url(url)
        handle_data(request)
    print('结束下载图片')


if __name__ == '__main__':
    main()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值