0%

自动下载最新一期人民日报并合并到单个PDF文件

source code

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
import requests
import os
from bs4 import BeautifulSoup
from PyPDF2 import PdfFileMerger #generic.py 587行注释掉报错信息
os.system("title 人民日报下载器")
headers={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Mobile Safari/537.36 Edg/92.0.902.55'}
indexurl="http://paper.people.com.cn/rmrb/paperindex.htm"
indexr=requests.get(indexurl,headers=headers)
indexb=BeautifulSoup(indexr.content,"lxml")
url="http://paper.people.com.cn/rmrb/"+str(indexb.select('meta[http-equiv="REFRESH"]')[0]["content"])[7:]
r=requests.get(url,headers=headers)
b=BeautifulSoup(r.content,"lxml")
pdfpath="http://paper.people.com.cn/rmrb"+str(b.select("body > div.main.w1000 > div.left.paper-box > div.paper-bot > p.right.btn > a")[0])[17:-11]
pagelist=len(b.select('a[id="pageLink"]'))
namelist=b.select("#pageLink")
date=str(b.select("body > div.main.w1000 > div.right.right-main > div.date-box > p.date.left")[0].get_text())[-16:-5]
merge=PdfFileMerger(strict=False)
print("最新一期报纸是:"+date+"\n本期共有"+str(pagelist)+"版\n开始下载...")
for i in range(pagelist):
path=pdfpath[:-21]+(str(i+1).rjust(2,"0"))+pdfpath[-19:-6]+(str(i+1).rjust(2,"0"))+pdfpath[-4:]
print(str(namelist[i].get_text()))
d=requests.get(path)
with open(str(namelist[i].get_text())+".pdf","wb") as code:
code.write(d.content)
merge.append(str(namelist[i].get_text()+".pdf"))
print("下载完毕 正在合并")
try:
with open("人民日报"+date+".pdf",'wb') as out:
merge.write(out)
except :
pass
merge.close()
for n in range(pagelist):
os.remove(str(namelist[n].get_text())+".pdf")
print("最新一期人民日报已经保存到:人民日报"+date+".pdf")
os.system("pause")

解释

脚本小子(script kiddie)是一个贬义词,用来描述:以“黑客”自居并沾沾自喜的初学者。脚本小子不像真正的黑客那样发现系统漏洞,通常使用别人开发的程序来恶意破坏他人系统。通常的刻板印象为一位没有专科经验的少年,破坏无辜网站企图使得他的朋友感到惊讶。因而称之为脚本小子。

他们常常从某些网站上复制脚本代码,然后到处粘贴,却并不一定明白他们的方法与原理。他们钦慕于黑客的能力与探索精神,但与黑客所不同的是,脚本小子通常只是对计算机系统有基础了解与爱好,但并不注重程序语言、算法、和数据结构的研究,虽然这些对于真正的黑客来说是必须具备的素质。

实例

关不掉的警告窗口

vbs脚本

1
2
3
do  
msgbox "系统异常"
loop

这个脚本制造的窗口只有用taskmgr才能关闭

黑框装逼

cmd脚本

1
2
@echo off
tree c:

飞快地在屏幕上闪过一堆字,似乎很牛逼。

胡言乱语

C++ (离大谱)

1
2
3
4
5
6
#include "iostream"
int main()
{
cout<<"MKBK"<<endl;
return 0;
}

不明白用C++意义何在,或许只是为了得到一个.exe?

自建静态短链接跳转

启动GitHub Pages,复制以下内容到***.html

1
2
3
4
5
<html>
<script>
window.onload=function(){window.location.replace("此处替换为要跳转的网址");}
</script>
</html>

注意:必须填写完整的URL,包括scheme(即“https://”),不然会有异常。

访问仓库pages/***就会跳转到设置好的网址。例:git.html跳转到github.com https://用户名.github.io/仓库名/git -> https://github.com

有条件可以给仓库的pages一个自己的域名,效果更好。如:https://example.com/git -> https://github.com

优点是免费,毕竟网上的短链接用的太多或设置有效期太长就会收费,主流的自建方案还要云主机,这个完全不花钱;另外你可以自己决定短链接的用的域名,更加自由。

缺点是设好的短链接和对应的网址都能被看到(但我相信public仓库里不会出现不该出现的东西);而且有先加载js脚本再跳转的过程,会稍微慢一丁点。

也可以用国内Gitee的pages。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment