吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3273|回复: 15
收起左侧

[Python 转载] 【wallhaven热门壁纸爬取】初学者习作(内含福利)

[复制链接]
slabber 发表于 2021-8-4 09:33
本帖最后由 slabber 于 2021-8-4 11:25 编辑

最近研究python爬虫技术,一直觉得wallhaven这个网站的壁纸质量很高,所以尝试爬取了一下,运用比较基础的模块功能,轻喷……



说明:
1、headers根据自己浏览器的信息替换,找到headers方法可以百度如何获取user-agent即可;
2、整个代码只是运用了基础的requests, lxml中的etree模块,用pycharm编写,安装方式可以cmd进入命令符输入pip install XXXX,或者pycharm界面按下ctrl+alt+s进入设置界面然后选择interpreter点击加号安装模块;
3、我只爬取了网站toplist的首页,其他页面自行攻破。


[Python] 纯文本查看 复制代码
import requests
from lxml import etree
import os

if not os.path.exists('./wallhaven热图'):
    os.mkdir('./wallhaven热图')
if __name__ == "__main__":
    headers = {
        'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Mobile Safari/537.36'
    }
    url = 'https://wallhaven.cc/toplist'
    page_text = requests.get(url=url,headers=headers).text
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//*[@id="thumbs"]/section/ul/li')
    for li in li_list:
        detail_url = li.xpath('./figure/a/@href')[0]
        detail_page_text = requests.get(url=detail_url,headers=headers).text
        tree2 = etree.HTML(detail_page_text)
        img_src = tree2.xpath('//*[@id="wallpaper"]/@src')[0]
        img_name = tree2.xpath('//*[@id="wallpaper"]/@src')[0].split('/')[-1]
        img_path = 'wallhaven热图/'+img_name
        img_data = requests.get(url=img_src,headers=headers).content
        with open(img_path,'wb') as fp:
            fp.write(img_data)
            print(img_name,'下载成功!')


下载图片展示:

fuli 1

fuli 1

fuli 2

fuli 2

免费评分

参与人数 2吾爱币 +8 热心值 +2 收起 理由
xztyx + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| slabber 发表于 2021-8-4 16:52
升级了一下 可以选择起始页面的…… 一共100多页 可以都一次性爬了 有会异步或者线程池的大佬可以指教一下 怎么更快速的下载!

[Python] 纯文本查看 复制代码
import requests
from lxml import etree
import os

if __name__ == "__main__":
    headers = {
        'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Mobile Safari/537.36'
    }
    url = 'https://wallhaven.cc/toplist?page=%d'
    #指定起始页面
    page_start = int(input('输入起始页码:'))
    page_end = int(input('输入结束页码:'))

    if not os.path.exists('./wallhaven热图'):
        os.mkdir('./wallhaven热图')

    for page in range(page_start,page_end+1):
        print('正在下载第%d页图片'%page)
        new_url = format(url % page)
        page_text = requests.get(url=new_url,headers=headers).text

        tree = etree.HTML(page_text)
        li_list = tree.xpath('//*[@id="thumbs"]/section/ul/li')
        for li in li_list:
            detail_url = li.xpath('./figure/a/@href')[0]
            detail_page_text = requests.get(url=detail_url,headers=headers).text
            tree2 = etree.HTML(detail_page_text)
            img_src = tree2.xpath('//*[@id="wallpaper"]/@src')[0]
            img_name = tree2.xpath('//*[@id="wallpaper"]/@src')[0].split('/')[-1]
            img_path = 'wallhaven热图/'+img_name
            img_data = requests.get(url=img_src,headers=headers).content
            with open(img_path,'wb') as fp:
                fp.write(img_data)
                print(img_name,'下载成功!')
 楼主| slabber 发表于 2021-8-4 16:50
xztyx 发表于 2021-8-4 12:27
求大佬弄个可以登陆可以搜索的撒~~

搜索无意义这个网站 都是英文 我补充了下可以选择起始页码的 一会添加进去
wu2_cgj 发表于 2021-8-4 10:22
QingYi. 发表于 2021-8-4 10:39

       
什么福利
dxx-20131202 发表于 2021-8-4 10:43
啥福利啊 说清楚点啊~
ds1 发表于 2021-8-4 10:45
同求福利
Dence 发表于 2021-8-4 10:55

啥福利啊 说清楚点啊~
灰灰鼠精灵 发表于 2021-8-4 11:12
福利在哪儿?
 楼主| slabber 发表于 2021-8-4 11:23

下载完你就知道
 楼主| slabber 发表于 2021-8-4 11:26

就是下载的图片……
 楼主| slabber 发表于 2021-8-4 11:28

重新上传了附件……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表