


Python simply implements a one-click method to extract the original paintings of Onmyoji
Free learning recommendation: python video tutorial
xpath – simple crawler example – extract Onmyoji original painting wallpaper
Article Directory
- 1. Preface
- 2. Libraries to be used
- 3. Implementation process
- 1. Analyze web pages
- 2. Complete code implementation
- 4. Synthetic video
1. Preface
Many people have played Onmyoji. Among other things, the original paintings of Onmyoji are quite delicate. In my spare time, I can crawl them with a few simple lines of code. Wouldn't it be beautiful if you took it off?
2. Libraries that need to be used
import requestsfrom lxml import etreefrom fake_useragent import UserAgentimport os
For those who have no need to install the library, you can take a look at this article I wrote before, which contains many domestic sources. link to facilitate your download.
Portal
3. Implementation process
1. Analyze web page
First open the official website, official website portal, click " Audio-Visual Center"In "Original Painting Wallpaper"
After entering the Original Painting Wallpaper page, select a wallpaper and check it.
I found that there are different links corresponding to different resolutions, and the picture I checked has six resolutions. Are all pictures like this?
Later I discovered that it was not!
As shown above, one picture even only has four resolutions, and the resolution and position of each picture are not consistent. So how to extract the original painting link?
A: Use xpath to extract nodes based on text content
a = lists[i].xpath('./p/p/a[contains(text(), "1920x1080")]')[0]
In this way, the a node with a resolution of "1920x1080" can be extracted.
Q:What is lists[i]
?
A: You will know after reading the complete code.
2. Complete code implementation
import requestsfrom lxml import etreefrom fake_useragent import UserAgentimport os path = 'D:/阴阳师'if not os.path.exists(path): os.mkdir(path)# 随机产生请求头ua = UserAgent(verify_ssl=False, path='fake_useragent.json')url = 'https://yys.163.com/media/picture.html' # 原画壁纸的页面链接response = requests.get(url=url).text html = etree.HTML(response)lists = html.xpath('/html/body/p[2]/p[3]/p[1]/p[3]/p[2]/p')num = 1for i in range(len(lists)): a = lists[i].xpath('./p/p/a[contains(text(), "1920x1080")]')[0] # 根据文本内容锁定节点a image_url = a.xpath('./@href')[0] # 获取原画壁纸链接 image_data = requests.get(url=image_url).content image_name = '{}.jpg'.format(num) # 给每张图片命名 save_path = path + '/' + image_name # 图片的保存地址 with open(save_path, 'wb') as f: f.write(image_data) print(image_name, '=======================>下载成功!!!') f.close() num += 1
The running results are as follows:
4. Synthetic video
Through the synthesized video, you can slowly appreciate the crawled original painting, which is very comfortable.
The code is as follows:
import cv2import os# 输出视频的保存路径video_dir = 'D:/yinyangshi/result.mp4'# 帧率fps = 0.2# 图片尺寸img_size = (1920, 1080)fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # opencv3.0 mp4会有警告但可以播放videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)img_files = os.listdir('D:/yinyangshi/')for i in range(1, 397): img_path = 'D:/yinyangshi/tupian/' + '{}.jpg'.format(i) frame = cv2.imread(img_path) frame = cv2.resize(frame, img_size) # 生成视频 图片尺寸和设定尺寸相同 videoWriter.write(frame) # 写进视频里 print(f'======== 按照视频顺序第{i}张图片合进视频 ========')videoWriter.release() # 释放资源
Note: When compositing a video, the image saving path and video generation path cannot contain Chinese! ! !
Onmyoji original painting collection
Related free learning recommendations: python tutorial(Video)
The above is the detailed content of Python simply implements a one-click method to extract the original paintings of Onmyoji. For more information, please follow other related articles on the PHP Chinese website!

There are many methods to connect two lists in Python: 1. Use operators, which are simple but inefficient in large lists; 2. Use extend method, which is efficient but will modify the original list; 3. Use the = operator, which is both efficient and readable; 4. Use itertools.chain function, which is memory efficient but requires additional import; 5. Use list parsing, which is elegant but may be too complex. The selection method should be based on the code context and requirements.

There are many ways to merge Python lists: 1. Use operators, which are simple but not memory efficient for large lists; 2. Use extend method, which is efficient but will modify the original list; 3. Use itertools.chain, which is suitable for large data sets; 4. Use * operator, merge small to medium-sized lists in one line of code; 5. Use numpy.concatenate, which is suitable for large data sets and scenarios with high performance requirements; 6. Use append method, which is suitable for small lists but is inefficient. When selecting a method, you need to consider the list size and application scenarios.

Compiledlanguagesofferspeedandsecurity,whileinterpretedlanguagesprovideeaseofuseandportability.1)CompiledlanguageslikeC arefasterandsecurebuthavelongerdevelopmentcyclesandplatformdependency.2)InterpretedlanguageslikePythonareeasiertouseandmoreportab

In Python, a for loop is used to traverse iterable objects, and a while loop is used to perform operations repeatedly when the condition is satisfied. 1) For loop example: traverse the list and print the elements. 2) While loop example: guess the number game until you guess it right. Mastering cycle principles and optimization techniques can improve code efficiency and reliability.

To concatenate a list into a string, using the join() method in Python is the best choice. 1) Use the join() method to concatenate the list elements into a string, such as ''.join(my_list). 2) For a list containing numbers, convert map(str, numbers) into a string before concatenating. 3) You can use generator expressions for complex formatting, such as ','.join(f'({fruit})'forfruitinfruits). 4) When processing mixed data types, use map(str, mixed_list) to ensure that all elements can be converted into strings. 5) For large lists, use ''.join(large_li

Pythonusesahybridapproach,combiningcompilationtobytecodeandinterpretation.1)Codeiscompiledtoplatform-independentbytecode.2)BytecodeisinterpretedbythePythonVirtualMachine,enhancingefficiencyandportability.

ThekeydifferencesbetweenPython's"for"and"while"loopsare:1)"For"loopsareidealforiteratingoversequencesorknowniterations,while2)"while"loopsarebetterforcontinuinguntilaconditionismetwithoutpredefinediterations.Un

In Python, you can connect lists and manage duplicate elements through a variety of methods: 1) Use operators or extend() to retain all duplicate elements; 2) Convert to sets and then return to lists to remove all duplicate elements, but the original order will be lost; 3) Use loops or list comprehensions to combine sets to remove duplicate elements and maintain the original order.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Zend Studio 13.0.1
Powerful PHP integrated development environment
