编写Python脚本批量下载DesktopNexus壁纸的教程
DesktopNexus 是我最喜爱的一个壁纸下载网站,上面有许多高质量的壁纸,几乎每天必上, 每月也必会坚持分享我这个月来收集的壁纸
但是 DesktopNexus 壁纸的下载很麻烦,而且因为壁纸会通过浏览器检测你当前分辨率来展示 合适你当前分辨率的壁纸,再加上是国外的网站,速度上很不乐观。
于是我写了个脚本,检测输入的页面中壁纸页面的链接,然后批量下载到指定文件夹中。
脚本使用 python 写的,所以需要机器上安装有 python 。
用法:
$ python desktop_nexus.py -p http://www.desktopnexus.com/tag/cat/ -s 1280x800 -o wallpapers
-p 包含 DesktopNexus 壁纸链接的页面,比如我的壁纸分享
-s 壁纸尺寸,可选,缺省为 1440x900
-o 壁纸输出的文件夹,可选,缺省为当前目录下的 wallpapers, 如果不存在会自动创建
代码:
#-*- coding: utf-8 -*- from argparse import ArgumentParser import os, re, sys import urllib2, cookielib, urlparse RE_WALLPAPER = r'http\:\/\/[^\/\.]+\.desktopnexus\.com\/wallpaper\/\d+\/' CHUNK_SIZE = 1024 * 3 class DesktopNexus: def __init__(self, page=None, size=None, output_dir=None): self.page = page self.size = size self.output_dir = output_dir def start(self): print 'Making output directory:', self.output_dir if not os.path.exists(self.output_dir): os.makedirs(self.output_dir) # Setup cookie cookie = cookielib.CookieJar() processer = urllib2.HTTPCookieProcessor(cookie) opener = urllib2.build_opener(processer) urllib2.install_opener(opener) self._read_page() def _get_pic_info(self, url): pic_id = url.split('/')[-2] html = urllib2.urlopen(url).read() pattern = r'<a href=\"\/get\/%s\/\?t=(?P<token>.*?)\"' % pic_id match = re.search(pattern, html, flags=re.I|re.M|re.S) if match: return {'id': pic_id, 'token': match.group('token'), 'size': self.size} else: raise Exception('Cound not find wallpaper') def _get_pic_file(self, pic_info): redirect_url = 'http://www.desktopnexus.com/dl/inline/%(id)s/%(size)s/%(token)s' % pic_info request = urllib2.urlopen(redirect_url) return request.geturl() def _download_pic(self, url): pic_info = self._get_pic_info(url) pic_file = self._get_pic_file(pic_info) filename = os.path.split(urlparse.urlparse(pic_file).path)[-1] filename = os.path.join(self.output_dir, filename) with open(filename, 'wb') as output: resp = urllib2.urlopen(pic_file) total_size = int(resp.info().get('Content-Length')) saved_size = 0.0 while saved_size != total_size: chunk = resp.read(CHUNK_SIZE) saved_size += len(chunk) output.write(chunk) self._print_progress('Saving file: %s' % filename, \ saved_size / total_size * 100) def _print_progress(self, msg, progress): sys.stdout.write('%-71s%3d%%\r' \ % (len(msg) <= 70 and msg or msg[:67] + '...', progress)) sys.stdout.flush() if progress >= 100: sys.stdout.write('\n') def _read_page(self): try: print 'Fetching content:', self.page html = urllib2.urlopen(self.page).read() links = set(re.findall(RE_WALLPAPER, html, re.M|re.I)) count = len(links) print 'Downloading wallpapers:' for i, link in enumerate(links): print '[%d/%d]: %s' % (i + 1, count, link) try: self._download_pic(link) except Exception as e: print 'Error downloading wallpaper.', e.message except Exception as e: print 'Error fetching content.', e if __name__ == '__main__': # Setup argparser parser = ArgumentParser('python desktop_nexus.py') parser.add_argument('-p', '--page', dest='page', required=True, \ help='specific a page that includes wallpaper list') parser.add_argument('-s', '--size', dest='size', default='1440x900', \ help='specific the wallpaper size, default to 1440x900') parser.add_argument('-o', '--output', dest='output_dir', default='wallpapers', \ help='specific the output directory, default to "wallpapers"') args = parser.parse_args() dn = DesktopNexus(**args.__dict__) dn.start()

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Tiada fungsi jumlah terbina dalam dalam bahasa C, jadi ia perlu ditulis sendiri. Jumlah boleh dicapai dengan melintasi unsur -unsur array dan terkumpul: Versi gelung: SUM dikira menggunakan panjang gelung dan panjang. Versi Pointer: Gunakan petunjuk untuk menunjuk kepada unsur-unsur array, dan penjumlahan yang cekap dicapai melalui penunjuk diri sendiri. Secara dinamik memperuntukkan versi Array: Perlawanan secara dinamik dan uruskan memori sendiri, memastikan memori yang diperuntukkan dibebaskan untuk mengelakkan kebocoran ingatan.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Walaupun berbeza dan berbeza berkaitan dengan perbezaan, ia digunakan secara berbeza: berbeza (kata sifat) menggambarkan keunikan perkara itu sendiri dan digunakan untuk menekankan perbezaan antara perkara; Berbeza (kata kerja) mewakili tingkah laku atau keupayaan perbezaan, dan digunakan untuk menggambarkan proses diskriminasi. Dalam pengaturcaraan, berbeza sering digunakan untuk mewakili keunikan unsur -unsur dalam koleksi, seperti operasi deduplikasi; Berbeza dicerminkan dalam reka bentuk algoritma atau fungsi, seperti membezakan ganjil dan bahkan nombor. Apabila mengoptimumkan, operasi yang berbeza harus memilih algoritma dan struktur data yang sesuai, sementara operasi yang berbeza harus mengoptimumkan perbezaan antara kecekapan logik dan memberi perhatian untuk menulis kod yang jelas dan mudah dibaca.

! X Memahami! X adalah bukan operator logik dalam bahasa C. Ia booleans nilai x, iaitu, perubahan benar kepada perubahan palsu, palsu kepada benar. Tetapi sedar bahawa kebenaran dan kepalsuan dalam C diwakili oleh nilai berangka dan bukannya jenis Boolean, bukan sifar dianggap sebagai benar, dan hanya 0 dianggap sebagai palsu. Oleh itu ,! X memperkatakan nombor negatif sama seperti nombor positif dan dianggap benar.

Tiada fungsi jumlah terbina dalam dalam C untuk jumlah, tetapi ia boleh dilaksanakan dengan: menggunakan gelung untuk mengumpul unsur-unsur satu demi satu; menggunakan penunjuk untuk mengakses dan mengumpul unsur -unsur satu demi satu; Untuk jumlah data yang besar, pertimbangkan pengiraan selari.

Halaman H5 perlu dikekalkan secara berterusan, kerana faktor -faktor seperti kelemahan kod, keserasian pelayar, pengoptimuman prestasi, kemas kini keselamatan dan peningkatan pengalaman pengguna. Kaedah penyelenggaraan yang berkesan termasuk mewujudkan sistem ujian lengkap, menggunakan alat kawalan versi, kerap memantau prestasi halaman, mengumpul maklum balas pengguna dan merumuskan pelan penyelenggaraan.

Bagaimana untuk mendapatkan data dinamik 58.com halaman kerja semasa merangkak? Semasa merangkak halaman kerja 58.com menggunakan alat crawler, anda mungkin menghadapi ...

Menyalin dan menampal kod itu tidak mustahil, tetapi ia harus dirawat dengan berhati -hati. Ketergantungan seperti persekitaran, perpustakaan, versi, dan lain -lain dalam kod mungkin tidak sepadan dengan projek semasa, mengakibatkan kesilapan atau hasil yang tidak dapat diramalkan. Pastikan untuk memastikan konteksnya konsisten, termasuk laluan fail, perpustakaan bergantung, dan versi Python. Di samping itu, apabila menyalin dan menampal kod untuk perpustakaan tertentu, anda mungkin perlu memasang perpustakaan dan kebergantungannya. Kesalahan biasa termasuk kesilapan laluan, konflik versi, dan gaya kod yang tidak konsisten. Pengoptimuman prestasi perlu direka semula atau direkodkan mengikut tujuan asal dan kekangan Kod. Adalah penting untuk memahami dan debug kod yang disalin, dan jangan menyalin dan tampal secara membuta tuli.
