fxzdsb 发表于 2018-3-16 15:50

使用python爬高清壁纸,附带壁纸的说明信息

代码在此

from requests_html import HTMLSession
import requests
import os

# 需要python3.6 貌似requests-html需要3.6

session = HTMLSession()
WORKDIR = 'D:\\bing_wallpaper'


def download(one_pic_url):
    p = session.get(one_pic_url)
    p.html.encoding = 'utf-8'
    # 图片标题 作者
    p_title = p.html.find('div.description', first=True).find('p.title', first=True).text
    # 图片副标题 说明
    p_sub = p.html.find('div.description', first=True).find('p.sub', first=True).text
    # 图片下载地址
    p_download_url = base_url + list(p.html.find('div.options', first=True).find('a.download').links)
    print("开始下载 {} ..".format(p_title))
    # 标题里包含 "/" 导致os.mkdir 报错 暂时还不知道咋解决 所以暂时替换成空格了
    pic_dir = "{}\\{}".format(WORKDIR, p_title.replace("/"," "))
    if not os.path.exists(pic_dir):
      os.mkdir(pic_dir)
    readme = "{}\\readme.txt".format(pic_dir)
    with open(readme, 'a+') as f:
      f.write(p_sub)
    pic = requests.get(p_download_url, stream=True)
    pic_file = "{}\\pic.jpg".format(pic_dir)
    if pic.status_code == 200:
      with open(pic_file, 'wb') as p:
            p.write(pic.content)
            print("完成下载 {}".format(p_title))


if __name__ == '__main__':
    if not os.path.exists(WORKDIR):
      os.mkdir(WORKDIR)
    base_url = "https://bing.ioliu.cn"
    sum = 2
    for num in range(1, sum):
      if num:
            url = "{0}/?p={1}".format(base_url, num)
            r = session.get(url)
            r.html.encoding = 'utf-8'
            # 获取当前页面下所有图片的连接
            pic_lst = r.html.find('a.mark')
            for pic_url in pic_lst:
                pic_uri = list(pic_url.links)
                # 组合出完整的图片下载地址
                one_pic_url = "{0}{1}".format(base_url,pic_uri)
                download(one_pic_url)



效果图也上几张







xiaoyumyy 发表于 2018-3-16 21:27

夏橙M兮 发表于 2018-3-16 21:20
楼主,运行失败了,求分析。

python目录下运行下 pip install requests_html

技术萌新 发表于 2018-3-16 16:29

感谢楼主分享,正在学习Python,自己撸一个试试:lol

stay1988 发表于 2018-3-16 16:06

不错,以后就用它当壁纸了

peterq521 发表于 2018-3-16 16:07

谢谢楼主 传统壁纸真有点看腻了

zdnyp 发表于 2018-3-16 16:11

# 标题里包含 "/" 导致os.mkdir 报错 暂时还不知道咋解决 所以暂时替换成空格了
在windows中,文件名是不能包含斜杠和反斜杠的,所以会报错,把斜杠替换成非“ / \ : ? “ < > | ”都行,双引号里的都不能用在文件名里。

duandaxei 发表于 2018-3-16 16:15

666学习下 多谢楼主了哈

fxzdsb 发表于 2018-3-16 16:16

zdnyp 发表于 2018-3-16 16:11
# 标题里包含 "/" 导致os.mkdir 报错 暂时还不知道咋解决 所以暂时替换成空格了
在windows中,文件名是不 ...

嗯 我理解了 因为系统的路径就是类似 c:\123\abc 所以如果目录名包含 /或者\ 会被当成是单独的目录

ABC12345 发表于 2018-3-16 16:18

强大的python~~

zdnyp 发表于 2018-3-16 16:20

fxzdsb 发表于 2018-3-16 16:16
嗯 我理解了 因为系统的路径就是类似 c:\123\abc 所以如果目录名包含 /或者\ 会被当成是单独的目录

{:1_921:}我也在学Python,scrapy

february 发表于 2018-3-16 16:24

感谢楼主分享源码,学习了,正好需要,也感谢3楼@zdnyp 的提醒,学习了
页: [1] 2 3 4
查看完整版本: 使用python爬高清壁纸,附带壁纸的说明信息