IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 爬虫日记2:爬取好看的图片 -> 正文阅读

[Python知识库]爬虫日记2:爬取好看的图片

前段时间我有个朋友看到一些小姐姐的照片,想全部下载下来,叫我帮个忙。于是花费了半天给他全部下载了下来。

引入库

import time
import requests
from lxml import etree

这三个库是为了让我们在请求别人网站的时候,让程序休息一会,避免别人的网站会拦截或者崩溃和将得到的页面源代码进行解析。

网页分析

利用浏览器的开发者模式,对页面进行分析,找出我们所需要的每个图片封面url

href = tree.xpath('//*[@id="features"]/div/div[1]/div/div[1]/a/@href')

我们得到了封面的url后,但这还不是我们所需要的,我们所需要的是超链接里面的图片

?我们进入后,发现每张图片都在<p></p>里面,如何我们利用循环得到每张图片的url地址

 for url_img in href:
            img_url = requests.get(url_img,headers=head)
            # print(img_url.text)
            time.sleep(1)
            t = etree.HTML(img_url.text)
            url_list = t.xpath("/html/body/section/div/div/div[1]/div[2]/p[2]/img/@src")

剩下的就很简单了,我们只需对文件进行保存就得到我们想要的结果了。

 with open(f"./img/{name}",mode="wb") as f:
        f.write(download_img.content)
        print("正在下载:" +name)
        time.sleep(1)

总结

但同步下载非常慢,我们可以写个多线程或者异步协程来帮助我们下载得更快。

我知道还有很多不足,有没有更简洁的写法,希望大佬们能指出,谢谢!

完整代码

import time
import requests
from lxml import etree

def get_page_url():
    for i in range(1, 4): # 循环3页
        url = f"https://mm.tvv.tw/category/xinggan/{i}/"

        # 请求页面得到源代码
        res = requests.get(url,headers=head)
        # 对源代码进行解析
        tree = etree.HTML(res.text)
        # 得到每个图片的封面url(href)
        href = tree.xpath('//*[@id="features"]/div/div[1]/div/div[1]/a/@href')
        # print("-------------------------------------------------------")
        time.sleep(3)
        for url_img in href:
            img_url = requests.get(url_img,headers=head)
            # print(img_url.text)
            time.sleep(1)
            t = etree.HTML(img_url.text)
            url_list = t.xpath("/html/body/section/div/div/div[1]/div[2]/p[2]/img/@src")
            # print(url_list)
            time.sleep(1)
            for url_src in url_list:
                get_img(url_src)

def get_img(url):
    name = url.rsplit("/",1)[1]
    time.sleep(2)
    download_img = requests.get(url,headers=head)
    with open(f"./img/{name}",mode="wb") as f:
        f.write(download_img.content)
        print("正在下载:" +name)
        time.sleep(1)
    f.close()




if __name__ == '__main__':
    head = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"}
    get_page_url()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 13:00:43  更:2022-01-16 13:01:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:30:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码