首页 > 编程语言 >python-爬元气桌面壁纸

python-爬元气桌面壁纸

时间:2024-01-13 20:58:43浏览次数:25  
标签:xpath etree 桌面壁纸 python li tag import div 元气

一、利用xpath来抓取图片

二、分析

  • 在浏览器中打开网页链接后,F12找到元素,可以看到图片的的内容可以在源代码中找到,
  • 分析发现,每一个图片分别对应着一个li的标签【在<li class = "float-left">下层】
  •  xpath解析: 

#用xpath模块来获取一个网页的信息
1、导包
    import requests
    from lxml import etree
2、发送请求
    声明url,UA
    根据请求方式进行请求,然后获取response内容
3、把获取的源码数据给etree对象进行处理
    html = etree.HTML(resp.text)
4、xpaht解析
    html.xpath(。。。)

 上面的是获取每一个图片中li里的值,这个和bs4有一点不太一样

三、完整代码

import requests
from lxml import etree
import json
import time

#1、声明一个url地址
url = "https://bizhi.cheetahfun.com/sj/dtag_11/"
#UA伪装
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 Edg/120.0.0.0" }
resp = requests.get(url=url,headers = headers)
#把resp.html文本放到etree中
html = etree.HTML(resp.text)  #<Element html at 0x20fe67b5a00>
#所有的div
lis = html.xpath('//*[@id="__layout"]/div/div[1]/main/div/div[1]/section/ul/li')
for li in lis: #循环遍历,得到每一个图片的li里面的值
    target_tag = li.xpath("./div/a/@target")[0]
    href_tag = li.xpath("./div/a/@href")[0]
    title_tag = li.xpath("./div/a/@title")[0]
    data_image_id = li.xpath("./div/a/@data-image-id")[0]
    data_keyword =  li.xpath("./div/a/@data-keyword")[0]
    class_tag = li.xpath("./div/a/@class")[0]
    src = li.xpath("./div/a/img/@src")[0]
    name = li.xpath("./div/a/img/@alt")[0]
#保存本地
    with open("E:/python123/元气桌面/" + title_tag + ".jpg",mode="wb")as f:
        f.write(requests.get(src).content)
        print(title_tag +"下载完成!!")
        time.sleep(0.5)

标签:xpath,etree,桌面壁纸,python,li,tag,import,div,元气
From: https://www.cnblogs.com/zp513/p/17951172

相关文章

  • python中的Map和Filter
    map会将⼀个函数映射到⼀个输入列表的所有元素上。这是它的规范:规范map(function_to_apply,list_of_inputs)大多数时候,我们要把列表中所有元素⼀个个地传递给⼀个函数,并收集输出。比方说:items=[1, 2, 3, 4, 5]squared =[]for iinitems:squared.append(i**2)Ma......
  • python中的*args**和**kwargs
    首先并不是必须写成*args和**kwargs。只有变量前⾯的*(星号)才是必须的。当然你也可以写成*var和**vars等等,而写成*args和**kwargs只是⼀个通俗的命名约定。*args和**kwargs主要用于函数定义,你可以将不定数量的参数传递给⼀个函数。*args是⽤来发送⼀个非键值对的可变数......
  • linux环境Python安装
    1、下载源码华为云镜像地址下载pythonPython加速地址:https://repo.huaweicloud.com/python/2、安装前置依赖yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devellibffi-d......
  • python socket服务端
    pythonsocket服务端importsocket#创建socket对象server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定IP地址和端口号server_socket.bind(('127.0.0.1',8000))#监听连接server_socket.listen(1)print('等待客户端连接...')whileTru......
  • python中如何在多层循环中使用break/continue
    关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多初学者比较容易提及的问题。先通过一个简单的单层循环来了解一下这两个关键字的使用。print('=============单层循环使用=============')for......
  • python回调函数
    回调函数在各种编程函数中都是比较常见的,回调函数的出现主要是为了降低函数之间调用的耦合性,从而实现解耦。简单来说,如果一个函数可以作为被传递就称这个函数为回调函数。比如:func1(func2()),那么func2就是回调函数。此时,只需要知道func2这个函数的功能是什么,在执行func1时调用fu......
  • 十行python代码实现文件去重,去除重复文件的脚本
    1.导入依赖'''导入依赖'''frompathlibimportPathimportfilecmp2.函数说明filecmp.cmp(path1,path2,shallow=True)path1/path2:待比较的两个文件路径。shallow:默认为True,即只比较os.stat()获取的元数据(创建时间,大小等信息)是否相同,设置为False的话,在对比文件的......
  • python经典有序序列的list列表推导式
    生成一个数据列表#初始化一个列表list_1=[]#使用循环生成一个列表数据forvalinrange(0,20,1):#加入集合list_1.append(val)#打印列表数据print(list_1)#[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]使用列表推导式生......
  • Python 潮流周刊第 35 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-01-13-weekly以下是本期摘要:......
  • [Python学习记]个人感受(持续更新)
    ------24/01/13------ 大家好,到目前为止我已经学习到if条件语句的使用了,准备学习循环语句,if语句学的薄浅还得多加练习实际应用!关于if的应用我自主设计了几个程序,希望大佬可以多加指点 ------23/11/13------ 大家好,我是小县城高中的一名学生 在我初中时期就已经知道主......