本帖最后由 fanvalen 于 2020-5-28 12:52 编辑
为啥我要弄个清单呢,
因为笔趣阁网站本身有很多小说却不推广到主页上来,
也不给列表显示全部,所以就有了这个。
比较傻是通过遍历所有id来获取书名的
先贴个我的代码
[Python] 纯文本查看 复制代码 #coding=utf-8
import requests
#import re
#import openpyxl
import threading
import os
#下载书页储存
def downweb(pg):
hd={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
ml="https://www.52bqg.com/book_"
#pg=1#1-127871
bkid=str(pg)
if not os.path.exists("d:\\bqg\\"+bkid+".html"):
zj=requests.get(url=ml+bkid,headers=hd,timeout=30)
if zj.status_code==200:
zj.encoding="gbk"
with open("d:\\bqg\\"+bkid+".html","w",encoding="utf-8")as f:
f.write(zj.text)
f.close()
else:
print("lost"+bkid)
else:
#print(bkid+"——is in")
if os.path.getsize("d:\\bqg\\"+bkid+".html")<3000:
os.remove("d:\\bqg\\"+bkid+".html")
else:
print(bkid)
lsit1=open("d:\\bqg.txt").read().splitlines()
for i in range(len(lsit1)):
pg=lsit1[i]
downweb(pg)
# 书名 作者 更新时间字数 简介
#
# pg=1
# while pg<127872:
# for i in range(10):
# th=threading.Thread(target=downweb,args=(pg,))
# th.start()
# pg=pg+1
# for j in range(10):
# th.join()
本代码分两段运行
[Python] 纯文本查看 复制代码 #coding=utf-8
import re
import openpyxl
import os
import threading
ld=openpyxl.load_workbook
book=ld("d:\\bqg.xlsx")
sheet1=book["Sheet1"]
def info(pg):
n=str(pg)
if os.path.exists("d:\\bqg\\"+n+".html"):
ht=open("d:\\bqg\\"+n+".html",encoding="utf-8").read()
#print(ht.read())
#print(type(ht))
#print(ht)
pat=r"<h1>(.*)</h1>\s*<p>作者:<a href=\S* target=\S*>(.*)</a></p>\s*<p>\s*动作:<a href=\S* onclick=\S* rel=\S*</a>,\s*<a href=\S*
onclick=\S*</a>,\s*<a href=\S* rel=\S*</a>\s*</p>\s*<p>更新时间:(.*).*\s*<p>最新:<a href=\S* title=.*</a></p>\s*<div class=\S*></div>\s*<div id=
\S*>([\S\s]*?)</div>"
r=re.findall(pattern=pat,string=ht)
print(r)
if len(r)>0:
#print(r)
d=r[0]
#print(d)
sheet1.cell(pg,1).value=n
for i in range(1,5):
#print(d[i-1])
sheet1.cell(pg,i+1).value=d[i-1]
print(n)
else:
print("没有内容"+n)
else:
#print("不存在"+n)
pass
# pg=1
# while pg<127872:
# for i in range(10):
# th=threading.Thread(target=info,args=(pg,))
# th.start()
# pg=pg+1
# for j in range(10):
# th.join()
#
lsit1=open("d:\\bqg.txt").read().splitlines()
for i in range(len(lsit1)):
try:
pg=int(lsit1[i])
#print(pg)
info(pg)
except BaseException:
pass
book.save("d:\\bqg.xlsx")
哈哈哈代码不是很规范,本代码修了两次,
原因是处理的数据有漏掉,有找出漏了的添加进去,
好了废话不多说下面上个图看看
文件下载用了一晚上,处理数据用了两分钟。
就像台下十年功,台上十分钟一样。
为啥要分两步呢,下载太久了,本来是一个就可以完成,由于下载问题我分成两段代码来完成。
python读取45M表格特慢了。
这里附上小说清单表格的下载链
蓝奏
经过某坛友提示加了类别,并对表格做了筛选设置,
之前筛选一直不能全部分类,原因是表格中间有空行断了,筛选就不继续查找,小说的ID有的不是连续的这次修正了
这里就不再上传代码了因为变动不大,就是改了re规则。
https://ww.lanzouj.com/id2p1ab
感谢这位提出意见的坛友
有了这个清单,论坛之前有位坛友写了笔趣阁小说下载器,填上书名就可以下载了
然后 喜欢的给个评分 谢谢
|