本文来源吾爱破解论坛
本帖最后由 huguo002 于 2019-5-10 23:05 编辑
【仅供学习参考】Python多线程池采集小说,超简单!
【仅供学习参考】Python多线程池采集小说,超简单!
运行程序 需要输入书目录为书链接名字,一串数字id
输入书目录,比如:338379
小说 三寸人间
[Python] 纯文本查看 复制代码
#采集小说lingdiankanshu.co import requests from lxml import etree from multiprocessing.dummy import Pool as ThreadPool #多线程 import os global xsmz xsmz='' def cljj(sm): global xsmz #url="https://www.lingdiankanshu.co/338379/" url="https://www.lingdiankanshu.co/{}/".format(sm) html=requests.get(url,timeout=20).text #print(html) ljnr=etree.HTML(html) #获取小说名 xsm=ljnr.xpath('//*[@id="info"]/h1/text()') xsmz=xsm[0] ljs=[] ljj=ljnr.xpath('//*[@id="list"]/dl/dd/a/@href') for lj in ljj: lj=url+lj ljs.append(lj) return(ljs) def cxsnr(url): global xsmz #url="https://www.lingdiankanshu.co/338379/2081667.html" html=requests.get(url,timeout=20).text #print(html) xq=etree.HTML(html) bt=xq.xpath('//*[@class="bookname"]/h1/text()') bt=bt[0] print(bt) nr=xq.xpath('//*[@id="content"]/text()') xsxq='' for nrxq in nr: nrxq.replace('\u3000\u3000','') xsxq=xsxq+nrxq+'\r\n' os.makedirs("./xs/"+xsmz+"/", exist_ok=True) with open('./xs/'+xsmz+'/'+bt+'.txt','w',encoding='utf-8') as f: f.write(bt+'\r\n'+xsxq) print(bt+'.txt---采集成功!') if __name__ == "__main__": sm=input('请输入书目录:') urls=cljj(sm) print(urls) try: # 开4个 worker,没有参数时默认是 cpu 的核心数 pool = ThreadPool() results = pool.map(cxsnr,urls) pool.close() pool.join() except: print("Error: unable to start thread")
多线程采集小说.JPG (56.11 KB, 下载次数: 0)
下载附件 保存到相册
仅供参考和学习!
ps,不知道是我网速差,还是该网站原因,request请求经常不成功!
更新!!
pyinstaller打包py成exe可执行程序,终于没有易语言可怕的报毒了!!
附exe下载地址,百度云:链接: https://pan.baidu.com/s/1kwQLSMXznHtXyy9066Typw 提取码: pg7v
测试了一下,没有优化好,程序会中断。。坑爹的网络!!!
打包exe程序.JPG (104.6 KB, 下载次数: 0)
下载附件 保存到相册
#后面的路径为你的python文件的位置(如果第一步没有添加变量,这里还是要到Script下执行pyinstaller.exe文件)
pyinstaller -F c:\...\your_python_file.py
Tips:实践问题
pyinstaller打包后的exe运行怎么去掉弹出的命令行提示窗口?
1.如果使用.spec文件的话, 在该文件中找到console=True修改为console=False
2.如果是直接指定python文件进行pyinstaller打包的话,需要添加—noconsolepyinstaller path\mycode.py--noconsole
如果想只打包成一个exe:pyinstaller -F path\mycode.py --noconsole或:pyinstaller -F -wpath\mycode.py
更换最终exe生成路径在cmd中,一开始就要 cd D:PythonEXE 切换到输出文件夹,然后在用上面的代码,
说明:各个参数的作用,例子:
pyinstaller -F -w -pD: mpcore-pythonlibs -i d: mpmain.ico main.py-F 表示生成单个可执行文件;
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-w 表示去掉控制台窗口,这在GUI界面时非常有用。
不过如果是命令行程序的话那就把这个选项删除吧!;
-c –console, –nowindowed 使用控制台,无界面(默认);
-p 表示你自己自定义需要加载的类路径,一般情况下用不到;
-i 表示可执行文件的图标。
来自头条号:小锋学长
@洛枫
感谢老哥的指点!!!
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: Scrapy爬取猫眼流浪地球影评2----- 获取数据
- 下一篇: js的简单分析爬取LOL皮肤