Python爬虫:豆瓣电影数据

描述

· 目标网站:豆瓣电影网https://movie.douban.com/

· 目标数据1:热门高分电影的名称、类型、评分、总评人数等

· 目标数据2:热门电影《少年的你》影评

· 数据存储:csv、txt

· 爬虫方法:requests、json、xpath、正则表达式

找到网站json,利用xpath、正则表达式等对豆瓣电影数据进行分页爬取,以及对热门电影《少年的你》全部影评进行爬取

movie.douban.com
“少年的你”影评

Read More

Python多线程基础

同步和异步

同步

其实类似于小学时期如何在最短的时间内去完成所有事件的数学题。

假设小明早上7:00起床,刷牙洗脸需要3分钟,烧水需要10分钟,穿衣叠被需要2分钟,吃早餐需要15分钟,收听早间新闻需要20分钟(7点开始),问小明起床做完这些事情至少需要多长时间?

同步是指调用一旦开始,必须等待返回调用的结果,才能继续下一步操作

那么结果就是,小明一共需要听新闻(20分钟)+穿衣叠被(2分钟)+刷牙洗脸(3分钟)+烧水(10分钟)+吃早餐(15分钟),总共50分钟,一定要迟到了,很笨

异步

异步和同步相反,调用一旦开始,调用者无需等待方法的完成,就可以继续执行后续方法,被调用者通过状态体通知调用者,或者使用回调函数处理调用

异步方法下,小明需要打开新闻,开始烧水,穿衣叠被,再洗漱,吃早餐,只需要20分钟,新闻结束,就可以高高兴兴去上学了

并发和并行

并发

并发是同时具有多个活动的系统,实质是一个或多个物理CPU在若干道程序(或线程)之间多路复用,其实就是n个事件在同一时间线上交替完成:小明做完所有事件花了50分钟

并发

并行

并行是真正意义上的不同事件或线程在同一时刻同时执行。并行利用并发使系统运行更快,在操作系统的多个抽象层次运用,是n个事件在同一时刻上同时发生:小明家里雇了4个机器人保姆,1个打开电视后烧水,1个帮小明穿衣叠被,1个帮小明洗漱,最后1个喂小明吃早餐,这样在早间新闻放完前,小明只用了18分钟就完成了所有事件,还多出2分钟时间检查书包

并行

进程和线程

进程

程序不能自己运行,只有将程序装载进内存,由系统分配资源后才能运行。程序是指令的集合,可以视为指令的静态文本,而进程是指令的执行活动,是动态的行为

进程是操作系统对于一个运行中程序的抽象,是CPU、内存、IO设备的抽象。系统可以同时运行多个进程

线程

线程是操作系统进行运算调度的最小单位,被包含于进程中,是进程的实际运作单位。一个进程可以由多个线程组成,线程之间共享代码和数据。

由于在实际网络服务器中对并行的需求,线程成为重要的编程模型:

1.多线程之间比多进程之间更易共享数据。
2.线程一般比进程高效。

Read More

HTTP请求方法

GET

请求指定的页面信息,并返回实体主体

POST

向指定的资源提交数据,请求处理。数据被包含在请求体当中,重新提交页面,导致新资源的建立或已有资源的修改

PUT

从客户端向服务器传送数据来取代指定的文档内容

DELETE

请求服务器删除指定的页面

类似GET请求,返回的响应中没有具体内容,仅获取报头

OPTIONS

允许客户端查看服务器的内容

TRACE

显示服务器收到的请求,用于测试或诊断

CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

GET方法和POST方法的区别

· GET仅请求目标信息,返回/刷新是无害的,POST每次返回/刷新会重新提交数据

· GET可被保存在书签、缓存、历史记录当中,POST不行

· GET相对没有POST安全

· GET参数通过URL进行传递,POST参数存放在Request body当中

· GET请求时,浏览器会将http header和data一起发送除去,服务器响应为200;

POST请求时,浏览器会先发送header,服务器响应100 continue,再发送data,服务器响应200(时间消耗相对GET要长)

· GET每次产生1个TCP数据包,POST产生两个

· GET对数据的长度有限制(2KB),POST没有限制

· GET仅允许ASCII字符,POST没有限制

Python的图片与字符画转换

总体思想为:将图片转换为灰度图片后,利用字符的“复杂程度”替换掉图片的内容,字符数组的“复杂程度”由大到小排列即可。

代码

(需要pip安装PIL库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from PIL import Image 
import argparse

# 命令行输入参数处理
parser = argparse.ArgumentParser()

parser.add_argument('file') # 输入文件
parser.add_argument('-o', '--output') # 输出文件
parser.add_argument('--width', type=int, default=80) # 输出字符画宽
parser.add_argument('--height', type=int, default=80) # 输出字符画高

# 获取参数
args = parser.parse_args()

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")


# 将256灰度映射到70个字符上
def get_char(r, b, g, alpha=256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]

if __name__ == '__main__':

im = Image.open(IMG)
im = im.resize((WIDTH, HEIGHT), Image.NEAREST)

txt = ""

for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'

print (txt)

# 字符画输出到文件
if OUTPUT:
with open(OUTPUT,'w') as f:
f.write(txt)
else:
with open("output.txt", 'w') as f:
f.write(txt)

(稿)

DOSBox0.74 For MASM

由于汇编的MASM是在32位环境下使用的,要在64位Windows环境下使用需要借助工具DOSBox。

DOSBox-0.74下载

地址:[https://pan.baidu.com/s/1wiAv0pwUhRavkM51pmdJCQ]
(提取码:m0kx)

MASM下载

MASM文件夹内至少要包含debug/exe2bin/link/masm四个.exe文件。
地址:[https://pan.baidu.com/s/1MC75x01gKBxZwxmBuYq6fA]
(提取码:4zu0)

使用

将DOSBox-0.74放进MASM文件夹内,找到DOSBox.exe文件双击打开,输入mount d d:\path,path可以为你的masm目录。
如果MASM文件夹下有编写好的.asm汇编指令,可以直接通过命令d:进入MASM,再输入masm,进入调试,输入.asm文件名称(可不写扩展名),依次link,debug完成。
效果如图:


Just for joy---打地鼠小游戏

Just For Joy 官网(模拟)

获取更多JFJ咨询,请关注我们的官方网站
Created by elbadaernU9.9(inc) powered by hexo 2018.

打地鼠小游戏

1
快来和你的小伙伴们来试试我们全新推出的休闲小游戏:MouseHit(打地鼠),游戏仅售0$!

购买链接:

1
2
链接: 
https://pan.baidu.com/s/1LSMij2q31pJXMwmXImponA
1
提取码:90t6

提要

我们的游戏基于Qt环境开发,可以实现调整游戏难度等各项基础功能,除此以外,我们为游戏设置了更多的可玩性因素!现在点击两个大红色问号,来获得作弊的快感!
你同样可以进行不同的游戏模式,我们目前开发出来经典模式和闯关两种模式,快来测试你在闯关模式中能闯到第几轮呢???
赶紧和你的小伙伴们一起来挑战吧!

(注,以上内容为演出效果,有时间将具体代码补至Github)

D3:SVG随机树与时钟等

基本功能及说明:

1.点击index.html文件,进入主页选择相应的功能。


2.选择svg盆栽随机树:基于D3和SVG生成的盆栽随机树,通过点击“Start Growing!”按钮,来实现盆栽的生长过程,同时更新按钮,继续点击“Growing More”继续生成更多的随机树子叶;最后通过点击“Replant”恢复花盆状态,可以进行重新生成;通过单机“Back”按钮,回到index主页面


3.选择SVG时钟:基于SVG和TweenmaxGSAP的时钟模型,用SVG来绘制时刻表形状,并通过GSAP来实现时钟指针转动的动态效果。进入主页以后会自动匹配系统时间,主要通过Tweenmax的GSAP动画形成环形时钟。浏览后可以通过点击“Back”按钮,回到系统index主界面,完成交互

用途

本文件内容可拆分用于装饰博客等视讯网站框架,增加功能性和可读性

使用的库和工具

jquery-2.1.1.min.js、TweenMax、D3.js、SVG

额外的Svg.css文件用于存放index.html的主界面信息,增强可视化。

其他




https://github.com/elbadaernU404/d3

Python爬虫相关

进程和线程

并发和并行

并发是同时具有多个活动的系统,实质是一个或多个物理CPU在若干道程序(或线程)之间多路复用。

并行是真正意义上的不同事件或线程在同一时刻同时执行。并行利用并发使系统运行更快,在操作系统的多个抽象层次运用。

进程

程序不能自己运行,只有将程序装载进内存,由系统分配资源后才能运行。程序是指令的集合,可以视为指令的静态文本,而进程是指令的执行活动,是动态的行为。
进程是操作系统对于一个运行中程序的抽象,是CPU、内存、IO设备的抽象。系统可以同时运行多个进程。

线程

线程是操作系统进行运算调度的最小单位,被包含于进程中,是进程的实际运作单位。一个进程可以由多个线程组成,线程之间共享代码和数据。
由于在实际网络服务器中对并行的需求,线程成为重要的编程模型:
1.多线程之间比多进程之间更易共享数据。
2.线程一般比进程高效。

Read More


Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2025 青域 All Rights Reserved.

UV : | PV :