跳至主要內容
Python NCRE 2

Python二级错题本


Jelly大约 17 分钟PythonNCREPython
课表推送助手2.0

2022年5月7日的早八,我突然想到了解决微信客户端内置浏览器可以打开网页,但在默认浏览器打不开问题的办法。

1.0回顾

1.0版本时我想过两种获取学校课表的办法,第一种是从学校官网获取课表及其调课信息,但是在做2.0的时我发候现,学校官网的调课信息存在滞后的问题;第二种是从学校公众号的课表里获取,但是这种方法在做1.0时我发现了其链接在电脑的浏览器上没能打开,显示请在微信客户端打开,当时我搜索的方式不对,没能找到正确的解决办法。

奇思妙想

今天思考着为什么微信的内置浏览器可以打开的链接为什么到默认浏览器就打不开了呢?他是怎么知道我不是用微信的客户端访问的呢?都是同一个链接访问,到默认浏览器就被重定向了。我想起请求头(Request Headers),对url请求资源肯定离不开请求头,爬虫第一课教的就是UA伪装,但讲到的大都是伪装浏览器,不让服务器检测到是爬虫的请求。但我现在觉得,UA更重要的是去模拟客户端,完成对客户端的请求。


Jelly大约 7 分钟PythonPython课表服务
wenku8小说收集

我是个收集党,对东西有很强的占有欲,想把喜欢的东西保存下来。

《魔女之旅》是一部我很喜欢的番剧,因为番剧,我知道了这是一系列丛书,因此我想把它从wenku网站给转移到我的GitHub上观看。

初步构想是以markdown语法写入GitHub,这样就可以直接看了。

那么,需要分为网页请求,获取所有的分目录以及所对应的网址,在对这些网址的信息,即小说的具体内容读出。

写着写着就不止于把《魔女之旅》下下来,这个文库网站说了停站,但还是有不少的小说在网站上可以通过url访问到,大概有1000套小说左右,分布在**https://www.wenku8.net/novel/2/(2000~3000)/index.htm**,所以我就顺手哦把这整个网站的所有小说下载然后写成md文件传到GitHub上,作为一个小说库,这是我搭建电子图书馆的第一个项目。


Jelly大约 1 分钟PythonPython爬虫
requests带列表的data数据提交

适用情况

post请求需要提交form-data的数据,在这个form-data中有如下结构,也就是在浏览器中的payload

xxx:string
xxxx:string
xdata:[{k1:v1,k2:v2,...},{k21:v21,k22:v22,...},...]

Jelly小于 1 分钟PythonPythonrequests
Python项目打包

Pyinstaller

当做一个项目需要打包时,不免会遇到将项目打包成可执行文件的问题,这个时候就要用到pyinstaller这个包了

首先要解决一个重要的问题,python文件在vscode中的项目路径和cmd打开的项目路径时不一样的,当项目中用到IO操作,或者相对路径引用时会出问题——找不到相关文件,因此需要在项目的启动文件加上

os.chdir(os.path.dirname(__file__))

Jelly大约 2 分钟PythonPyinstallerPython
Python多进程的简单实现

multiprocessing map()多参数传递

首先从模块multiprocessing导入Pool类,实例化并调用。

from multiprocessing import Pool

pool = Pool()
pool.map(function, parameter)
pool.close()
pool.join()

Jelly大约 1 分钟PythonPython网络爬虫
漫画狗漫画下载

manga-get

我在了解galgame中接触到了一些漫画, 这些漫画大概率是不可能被做成番剧那样的视频的, 我就想找一些漫画网站看漫画, 但是有的网站弹窗太多, 页面不整洁, 加载太慢等诸多问题, 我就想直接把漫画下载到本地来看, 顺便巩固下最近学的知识。

首先我着手对dogemanga(漫画狗)这个漫画网站进行分析, 从url来看主要分为三类页面:

  1. com/?=搜索内容/
  2. com/m/
  3. com/p/

所以可以通过解析url来确定所在的页面。

上述三个页面中内容的关系为:1-匹配结果(可能与搜索有关的漫画有关的漫画)>2-漫画所包含的(话/卷)>3-(话/卷)所含的每一页。


Jelly大约 2 分钟PythonPython爬虫
Python代理设置

Python代理设置

requests中代理的写法, 要注意的是proxies字典的value要为字符串

proxies = {
    "http":"host:port",
    "https":"host:port"
}

Jelly小于 1 分钟PythonProxy