网页分析

海贼王高清壁纸

代码我们主要是用的etree模块获取网页元素

谷歌浏览器,f12检查发现

img

目标后缀路径获取

//ul[@class=“pic-list2 clearfix”]//a[@class=“pic”]/@href

在Elements栏直接ctrl+f输入上列代码可以定位到符合位置

这说明图片这里的图片只是一个展示性的图片,点进图片后进入图片集

img

继续分析,发现每一个图片都包裹在这里

img

图片路径获取

//img[@id=“bigImg”]/@src

下一张图片路径获取

​ //a[@id=“pageNext”]/@href

当然路径获取的是一个列表,如果需要获取字符串,直接取下标为0的元素

具体代码实现

import requests
from lxml import etree


# 图片下载
def download_img(img_url, headers, num):
    img_content = requests.get(img_url, headers).content
    # 文件路径名 img_url[-15:]截取字符串
    # 提前在项目根目录建好onePiece_img文件夹
    file_name = 'onePiece_img/' + str(num) + '_' + img_url[-15:]
    with open(file_name, 'wb') as img:
        img.write(img_content)
    print("正在下载%s" % file_name)


# 图片解析
def parses_img(targets_url, headers, num, page):
    url = 'http://desk.zol.com.cn/' + targets_url
    response = requests.get(url, headers)
    html = etree.HTML(response.text)
    # 捕获异常
    try:
        # list提取
        img_url = html.xpath('//img[@id="bigImg"]/@src')[0]
        download_img(img_url, headers, num)
        img_next = html.xpath('//a[@id="pageNext"]/@href')[0]
        parses_img(img_next, headers, num, page)
    except:
        print("第%s页第%s组结束" % (page, num))


# 获取url
def get_url():
    # 爬两页的图片
    for i in range(2):
        if i == 0:
            url = 'http://desk.zol.com.cn/dongman/haizeiwang/'
        else:
            url = 'http://desk.zol.com.cn/dongman/haizeiwang/' + str(i + 1) + '.html'
        page = i + 1
        # 浏览器标识
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
        }
        response = requests.get(url, headers)
        html = etree.HTML(response.text)
        targets_url = html.xpath('//ul[@class="pic-list2  clearfix"]//a[@class="pic"]/@href')
        num = 1
        for url in targets_url:
            parses_img(url, headers, num, page)
            num = num + 1


get_url()


一个可爱的人