爬虫学习笔记-站长素材网站图片下载

1. 导入必要的模块:

  • `urllib.request`:用于发送HTTP请求和获取响应。

  • `urllib.parse`:用于解析URL。

  • `lxml.etree`:用于解析HTML内容。

2. 创建一个`create_request`函数

该函数接受一个参数`page`表示页面编号。根据`page`的值,构造相应的URL,并设置请求头信息。

3. 创建一个`get_content`函数

该函数接受一个参数`request`表示HTTP请求对象。使用`urllib.request.urlopen`发送请求并获取响应。将响应内容以UTF-8编码解码,并返回结果。

4. 创建一个`download`函数

该函数接受一个参数`content`表示网页内容。使用`lxml.etree.HTML`方法解析内容为树形结构。使用XPath表达式提取图片名称和图片链接,并循环下载图片。

5. 创建`if name == 'main':`

首先读取用户输入的开始页和结束页。然后,使用循环遍历每一页的页面编号,并依次执行以下步骤:

  • 调用`create_request`函数创建请求对象。

  • 调用`get_content`函数获取网页内容。

  • 调用`download`函数下载图片。

注意,代码中的`urllib.request.urlretrieve`方法用于下载图片,需要提前创建文件夹,将图片保存到指定路径。

源码

python 复制代码
import urllib.request
import urllib.parse
from lxml import etree

#第一页 https://sc.chinaz.com/tupian/index.html
#第二页 https://sc.chinaz.com/tupian/index_2.html

def create_request(page):
    # 判断是否为第一页
    if page == 1:
        url = 'https://sc.chinaz.com/tupian/index.html'
    else:
        url = 'https://sc.chinaz.com/tupian/index_'+str(page)+'.html'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    request = urllib.request.Request(url=url,headers=headers)
    return request

def get_content(request):
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')
    # print(content)
    return content

def download(content):
    # 解析获取的html代码
    tree = etree.HTML(content)
    name_list = tree.xpath('//div[@class="item"]/img/@alt')
    # # 测试获取的数据
    # for n in name_list:
    #     print(n)
    img_list = tree.xpath('//@data-original')
    # for m in img_list:
    #     print(m)
    # 拼接保存的url,文件名
    for i in range(len(name_list)):
        name = name_list[i]
        src = img_list[i]
        url = 'https:'+src

        urllib.request.urlretrieve(url=url,filename='./img/'+name+'.jpg')

if __name__ == '__main__':
    start_page = int(input('请输入开始页'))
    end_page = int(input('请输入结束页'))
    for page in range(start_page,end_page+1):
        request = create_request(page)
        content = get_content(request)
        download(content)
相关推荐
不太可爱的叶某人3 小时前
【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
笔记·学习·mysql
岁岁岁平安3 小时前
Redis基础学习(五大值数据类型的常用操作命令)
数据库·redis·学习·redis list·redis hash·redis set·redis string
打酱油的;4 小时前
爬虫-request处理POST
爬虫
知识分享小能手5 小时前
Vue3 学习教程,从入门到精通,使用 VSCode 开发 Vue3 的详细指南(3)
前端·javascript·vue.js·学习·前端框架·vue·vue3
pay4fun6 小时前
2048-控制台版本
c++·学习
知识分享小能手7 小时前
Bootstrap 5学习教程,从入门到精通,Bootstrap 5 表单验证语法知识点及案例代码(34)
前端·javascript·学习·typescript·bootstrap·html·css3
巴伦是只猫7 小时前
【机器学习笔记 Ⅲ】4 特征选择
人工智能·笔记·机器学习
不爱说话的采儿8 小时前
UE5详细保姆教程(第四章)
笔记·ue5·游戏引擎·课程设计
weixin_418813878 小时前
Python-可视化学习笔记
笔记·python·学习
小白学大数据8 小时前
R语言爬虫实战:如何爬取分页链接并批量保存
开发语言·爬虫·信息可视化·r语言